学部1年のR言語の演習

投稿者: | 2018年7月17日

学部1年生の統計学、数学の導出の演習問題が多いので、R言語を操作して直感的に理解する問題を解いてもらいました。大数の法則や、中心極限定理は、具体的にデータを触らないと、数式だけで理解するのは難しいと思います。また、二項分布の極限としてポアソン分布が、t分布の極限として正規分布が得られることなども、やってみると理解が深まるように思いました。

  1. 下記は、1個の$\lambda$と複数の$n$の値に対して、$p=\lambda/n$を計算して、それぞれで二項分布のグラフを書いている。ただし、横軸は$0\leq k\leq n$ではなく、$0\leq k/n\leq 1$になっている。また、赤のグラフは、ポアッソン分布のグラフを表している。$\lambda$(3種類)および$n$の値(各$\lambda$について10種類)をいろいろかえて、グラフを3枚提出せよ。そして、$n$が大きくするとき、それらはどのような分布に近づくか。

    inner.prod=function(x,y)sum(x*y)
    n.values=c(100,200,300,400,500)
    lambda=20
    plot(c(0,0.5),c(0,0.15),xlab=”k/n”,ylab=”確率”,main=”lambda=20″, type=”n”)
    i=1
    z=dpois(0:n,lambda)
    lines(x,z,col=1,lty=1,lwd=2) # 太い実線
    for(n in n.values){
    p=lambda/n
    x=(0:n)/n
    y=dbinom(0:n,n,p)
    i=i+1
    lines(x,y,col=i,lty=2,lwd=1) # 細い破線
    }
    m=length(n.values)
    legend(“topright”,legend=c(“ポアソン分布”,paste0(“n=”,n.values,”の二項分布”)),
    col=1:(m+1), lwd=c(2,rep(1,m)),lty=c(1,rep(2,m)), cex =.8)

  2. 下記は、相互に独立で標準正規分布にしたがう確率変数$X_1,\cdots,X_n$から計算した$(X_1+\cdots+X_n)/n$の実現値が、$n$とともに($n\leq m=1000$まで)どのように変化するかを10回繰り返したものである。標準正規分布を、$X_i=0,1$, $i=1,\cdots,n$の確率変数(等確率)にかえて、同様のグラフを作成せよ。

    m=1000
    plot(x=0:m,ylim=c(-1,1),xlab=”n”,ylab=”サンプル平均”, type=”n”)
    for(i in 1:10){
    S=0
    y=NULL
    for(n in 1:m){
    x=rnorm(1)
    S=S+x
    y=c(y,S/n)
    }
    lines(1:m,y,col=i)
    }

  3. 下記は、1の生起する確率が$p=0.25$の$X=0,1$の確率変数を$n$個加えて$n$で割り、平均$\mu=p$を引いたものから$\sqrt{\sigma^2/n}$(分散$\sigma^2=p(1-p)$)で割った値がどのような分布に従うかをみたものである。$X$が平均1のポアソン分布にしたがう場合について、同様の処理を行い、グラフを出力せよ。

    p=0.25
    m=1000
    n=100
    y=NULL
    for(i in 1:m){
    x=rbinom(n,1,p)
    y=c(y,(sum(x)/n-p)/sqrt(p*(1-p)/n))
    }
    hist(y,breaks=m/40,probability=TRUE,main=”相対頻度”)
    curve(dnorm,-10,10,add=TRUE)

  4. 下記は、標準正規分布と自由度4,8,12,16,20のt分布のグラフを重ね合わせたものである。問題1にならって、グラフ右上に凡例をつけよ(サンプルを参照のこと)。

    df.values=c(4,8,12,16,20)
    curve(dnorm,-5,5,xlab=”x”,ylab=”確率密度”, lwd=2, lty=1)
    for(i in 1:5)curve(dt(x, df=df.values[i]),-5,5, col=i+1,lwd=1,lty=2, add=TRUE)