理学療法士がまとめたノート

統計学備忘録 since2016

Rを使って統計学を勉強するブログです

正規分布の色塗り (polygon関数 )

投稿日:2018.7.19 最終更新日:2019.5.18

polygon関数
例)y = 2*x (x,y)=(0,0), (2,0), (2,4)の△を塗りつぶす場合

x <- 0:5
y <- 2*x
plot(x,y)
polygon(c(0,1,2,2,1,0),c(0,0,0,4,2,0),col="gray")  # c(x軸, y軸, 色)

#三角形なので、のように書いても同じです
polygon(c(0,2,2,0),c(0,0,4,0),col="gray")

f:id:yoshida931:20190518182109p:plain:w300

正規分布 N(2, 0.52)のグラフに色を塗ります(0<x<1.5)

x1seq <- seq(0, 5,length=100)
plot(x1seq, dnorm(x1seq,2, 0.5),type="l")

x2seq <- seq(0, 1.5,length=100)
y <- dnorm(x2seq,2, 0.5)
polygon(c(x2seq,rev(x2seq)),c(rep(0,length(x2seq)),rev(y)),col="gray")

f:id:yoshida931:20190518215209p:plain:w400

x軸のメモリを書き替える操作方法

plot(dnorm, -4, 4, xaxt="n")
xvals <- seq(-4, -1.96, length=10)        # -4以上-1.96以下 領域をx軸方向に10個の多角形(台形)に等分割
dvals <- dnorm(xvals)    # y軸

# x軸 c(c(xvals), rep(0,10)) を指定、次に曲線c(rev(xvals), rev(dvals))を指定
# polygon関数の上記の点で囲まれた内側を塗ってくれます

polygon(c(xvals,rev(xvals)),
        c(rep(0,10),rev(dvals)),col=5)       

xvals2 <- seq(1.96, 4, length=10)        
dvals2 <- dnorm(xvals2)   
polygon(c(xvals2,rev(xvals2)),
        c(rep(0,10),rev(dvals2)),col=5) 

name<-c("-1.96","0","1.96")
axis(side=1,at=c(-1.96,0,1.96),labels=name)  
f:id:yoshida931:20180719112607p:plain:w500

x軸のメモリを書き替える操作方法2(平均が0でない場合)
N(45, 102)におけるz<40の確率を塗りつぶします

pn <- pnorm(40, mean=45, sd=10)

par(ps=15)
plot(dnorm, -4, 4, xaxt="n", xlab="N(45,10^2)")
xvals <- seq(-4, qnorm(pn), length=100) # -4以上40以下 領域をx軸方向に10個の多角形(台形)に等分割
dvals <- dnorm(xvals)    # y軸

polygon(c(xvals,rev(xvals)),
        c(rep(0,100),rev(dvals)),col=7)       # 塗りつぶす

name <- c("40")
axis(side=1,at=c(qnorm(pn)),labels=name)  
f:id:yoshida931:20180904134826p:plain