Yoshi Nishikawa Blog

医学となにかのインタラクティブ

データ整理にまつわるエトセトラ

お盆のお供にRStan

お盆ですね。京都では、有名な五山の送り火があります。

とは言っても、病院に休みはありません。むしろ私は"休日当番"として働いています。その傍ら、「はじめての統計データ分析 ベイズ的<ポストp値時代>の統計学」を読み解いています。

データ整理

データ整理について学びのあった基礎的なコードを以下に載せておきます。

dat1<-c(floor(runif(10, min=70, max=90)))  #70-90までの乱数を10個作る。
dat1s50<-seq(70,90,5) #5毎に区切る階級幅の準備
dat1s10<-seq(70,90,10) #1毎に区切る階級幅の準備
dat1t<-table(cut(dat1, dat1s50)) #dat1をdat1s50の階級幅で区切ったtable
cumsum(dat1) #どんどん足す。
cumsum(dat1t) #区切った表で見るとこんな感じ。
van<-function(x){mean((x-mean(x))^2)} # 標本分散
van(dat1)
var(dat1)                             # 不偏分散
sd(dat1)                              # 不偏標準偏差 
sqrt(variance(dat1))                  # 標本標準偏差 
sort(dat1)                            #ソートする
median(dat1)                          #median中間値
quantile(dat1,0.3,type =1)            #30%の値
quantile(dat1,0.7,type =1)            #70%の値
rev(sort(table(round(dat1))))    #多い順に並ぶ。

正規分布

正規分布を用いて色々と試してみる。

dnorm gives the density, pnorm gives the distribution function, qnorm gives the quantile function, and rnorm generates random deviates. (R Helpより引用)

正規分布にまつわる関数に
dnorm, pnorm, qnorm, rnorm が存在する。

y<-c(floor(runif(50, max=100, min=1))) # 正規分布の乱数でyを作ってみる
sort(y) # 並べ替え
m<-mean(y) # 平均
var(y)    # 不偏分散
v<-van(y) # 標本分散
sd(y)  # 不偏標準偏差 
s<-sqrt(van(y)) # 標本標準偏差 

ここから、この平均と標本標準偏差を用いて、正規分布を仮定してみる。

dnorm(40, m, s) #40"付近"の値が観察される
pnorm(40, m, s) #40未満の値が観察される確率
qnorm(0.6, m, s) #60%の値

つぎは、実際にRStanを用いてRに計算を「お願い」してみます。

References

  1. はじめての 統計データ分析 ―ベイズ的〈ポストp値時代〉の統計学― 豊田秀樹 朝倉書店 (2016/6/2)
  2. 正規分布に関連する関数(dnorm, pnorm, qnorm, rnorm)
    http://cse.naro.affrc.go.jp/minaka/R/R-normal.html