統計の復習2 ~データの前処理 - osaka...
TRANSCRIPT
統計の復習2 ~データの前処理
ここでの目標
分析前の処理(前回は省略していた)を理解
NS(Number of species): 島で観測されたカメの種類 (0,1,2,....)
サンプルサイズ 29
NS of Tortoise vs Geographic Data
Area: 島の面積 [hr], Anear :一番近い島の面積 [hr], Dist: 一番近い島との距離 [km], DistSC: Santa Cruz島からの距離 [km], Elevation : 島の標高[m]
*CRAN alr3 パッケージ内, galapagos データセット alr3 は, S. Weisberg による. オリジナルデータは Johnson and Raven (1973).
データ例*
> library(alr3); > data(galapagos); > gala <- galapagos[,-c(2,8)] > gala NS Area Anear Dist DistSC Elevation Baltra 58 25. 09 1.84 0.6 0.6 NA Bartolome 31 1.24 572.33 0.6 26.3 109 Caldwell 3 0.21 0.78 2.8 58.7 114 Seymour Tortuga Wolf
44 16 21
1.84 1.24 2.85
25.09 17.95 2.33
0.6 6.8 34.1
9.6 50.9 254.7
NA 186 253
.....
これからやりたいこと
NS Area Anear Dist DistSC Elevation Baltra 58 25. 09 1.84 0.6 0.6 NA Bartolome 31 1.24 572.33 0.6 26.3 109 Caldwell 3 0.21 0.78 2.8 58.7 114 Seymour Tortuga Wolf
44 16 21
1.84 1.24 2.85
25.09 17.95 2.33
0.6 6.8 34.1
9.6 50.9 254.7
NA 186 253
.....
早速、分析をはじめたいのでありますが、 何やら気になるものがあるであります.
目的変数 説明変数 (5変数!)
分析前の処理1
実際のデータでは, 一部のサンプルで特定の変数が不明なものがある (NA= Not Available)
欠測値(欠損値)
対処法:
1.分析から取り除く(サンプルサイズが減る)
2.欠測メカニズムを考慮した分析手法【本講義では扱わない】
例: na.omit() を用いてNA を取り除く → 23件
> gala.cor <- na.omit(gala); > gala.cor; NS Area Anear Dist DistSC Elevation Bartolome 31 1.24 572.33 0.6 26.3 109 Caldwell 3 0.21 0.78 2.8 58.7 114 Champion 25 0.10 0.18 1.9 47.4 46 .... Santa_Maria 285 170.92 0.10 2.6 49.2 640 Tortuga 16 1.24 17.95 6.8 50.9 186 Wolf 21 2.85 2.33 34.1 254.7 253
> pairs(gala.cor);
NS
0 2000 4000 0 500 1500
010
030
0
020
0040
00
Area
Dist
010
2030
40
0 100 300
050
015
00
0 10 20 30 40
Eleva
データのプロット ワンポイント 多変量の連続データは2つずつの
プロット(散布図)でおおまかな傾向をつかむ!
(スペースの都合で4変量のみ)
気になること
Areaでひとつはずれている点が目立つ (極端に大きい・小さい値を はずれ値(outlier)という) → Isabera island
分析前の処理2
はずれ値に強く影響を受ける統計手法に注意!
はずれ値
対処法:
1.分析から取り除く(サンプルサイズが減る)
2.はずれ値に強い分析手法 (ロバスト統計)【本講義では扱わない】
例: Isabera を取り除く
# Isabera island の除去 gala.cor2 <- gala.cor[(gala.cor$Area < 1000),]; pairs(gala.cor2);
gala.test = galapagos データの一部を削除 (説明の都合含む)
加工後のデータ
> gala.test NS Area Anear Dist DistSC Elevation Bartolome 31 1.24 572.33 0.6 26.3 109 Caldwell 3 0.21 0.78 2.8 58.7 114 Champion 25 0.10 0.18 1.9 47.4 46 .... Santa_Maria 285 170.92 0.10 2.6 49.2 640 Tortuga 16 1.24 17.95 6.8 50.9 186 Wolf 21 2.85 2.33 34.1 254.7 253
次節で上のデータについて分析を行っていく!
NS
0 200 600 0 500 1000 1500
010
030
0
020
060
0
Area
Dist
010
2030
40
0 100 300
050
010
0015
00
0 10 20 30 40
Eleva
ここまでのまとめ:分析前の作業
分析データの精錬作業
データの中身の確認 (数値チェック)
プロット, 図示 (視覚的に見ておかしくないか?)
加工・削除 (慎重に!)
1. 重回帰の統計モデル
ここでの目標
前回:単回帰
目的変数1: 説明変数1
今回:重回帰
目的変数1: 説明変数5!
前回との違い; 共通点に注目!
22,,2,1 =i
),0(N~ 2σε i
統計モデルの導入
=iY
とりあえず線形モデル (説明変数5つのケース; 重回帰モデルともいう)
iiiiii xxxxx εβββββα ++++++ 5544332211
目的変数 ( i 番の島に生息するカメの種類) iY51 ,, ii xx 説明変数
i 番の島の 1. Area: 面積 [hr], 2. Anear :一番近い島の面積 [hr], 3. Dist: 一番近い島との距離 [km], 4. DistSC: Santa Cruz島からの距離 [km], 5. Elevation : 標高[m]
モデルパラメータの推定
線形回帰
> gala.lm.res <- lm(NS~. , data=gala.test);
ij
ijj x εβα ++∑=
5
1
各推定値
,290.0ˆ,0667.0ˆ,285.0ˆ,6.29ˆ 321 −=−=== βββα
144.0ˆ,133.0ˆ54 =−= ββ
R プログラム例
22,,2,1 =i),0(N~ 2σε i=iY
推定値は出るが, はたしてうまくいっているのか(確認方法?)
重回帰でのあてはまりの良さ(1/3)
残差 = 実測値 - あてはめた値
残差 (Residual)
−= iyiε
あてはめた値(Fitted Value)
∑=
+=5
1
ˆˆˆj
ijji xy βα
iy
単回帰の場合
3x2x 4x
の y 座標 あてはめた値
残差 注意: 残差の総和は0
0ˆ1
=∑=
n
iiε
残差平方和
残差分析 (Residual Analysis)
基本的には RSSが小さいほど, あてはまりがよいという考え方
( )∑=
=n
iiRSS
1
2ε
十分小さいかどうか?
→ 1. 仮説検定【触れない】
2. 決定係数 (寄与率)・自由度調整済み決定係数
そもそものモデル(等分散の正規分布)が適切か?
→ 残差プロット
重回帰でのあてはまりの良さ(2/3)
> summary(gala.lm.res) Call: lm(formula = NS ~ ., data = gala.test) Residuals: Min 1Q Median 3Q Max -83.68 -29.18 -3.19 28.46 121.52 .... Residual standard error: 47.91 on 16 degrees of freedom Multiple R-squared: 0.8699, Adjusted R-squared: 0.8292
決定係数 (Coefficient of Determination; R-squared)
定量的な尺度:
定義から必ず1以下であり, 1に近いと回帰式のあてはまりがよい
*参考:
たとえば, 永田 靖&棟近 雅彦 著: 多変量解析入門. サイエンス社, 4章, 5章.
Rコマンドでは、決定係数と自由度調整済み決定係数*を自動で計算
22 1
ySRSSR −= ( )∑
=
−=n
iiy yyS
1
22
重回帰でのあてはまりの良さ(3/3)
線形モデルでの残差プロット(1/2)
モデルが正しいなら, 残差は平均0、分散一定の正規分布から発生しているようにみえるはずだが・・・
y0 100 200 300 400
-50
050
100
Galapagos Tortoise
Fitted
Res
idua
ls> plot(predict(gala.lm.res), residuals(gala.lm.res), xlab="Fitted", ylab="Residuals", main="Galapagos Tortoise" ); > abline(h=0, col="red");
R プログラム例
yy ˆˆ −=ε
仮定していたモデル
22,,2,1 =i),0(N~ 2σε i
決定係数は 0.8程度で悪くない!
→ 残差プロットで見るとどうか?
実際の残差 (Residuals)と 正規乱数との比較
yy ˆ−
y0 100 200 300 400
-50
050
100
Galapagos Tortoise
Fitted
Res
idua
ls
> var.res <- mean(residuals(gala.lm.res)^2); > residual.sim <- rnorm(22, sd=sqrt(var.res)); # sd= 40.9 > plot(predict(gala.lm.res), residual.sim, ylim=c(-60,60), xlab="Fitted", ylab="Residuals(Ideal)", main="Galapagos Tortoise" ) > abline(h=0, col="red");
iε
R プログラム例 (右上図)
y0 100 200 300 400
-60
-40
-20
020
4060
Galapagos Tortoise
Fitted
Res
idua
ls(Id
eal)
線形モデルでの残差プロット(2/2)
理解度チェック:重回帰分析
線形モデルでの分析では, 多くのツールがパラメータの推定値を計算してくれるが, あてはまりの良さも確認するべきである。
決定係数や自由度調整済み決定係数が1に近い値(0.8, 0.9 など)であれば, 線形モデルでよく説明できるため, 残差プロットのチェックをわざわざやる必要はない.
今回の分析は, ガラパゴス諸島の各島の面積を, そこに生息するカメの頭数や島の標高などで説明するための分析である
2. ポアソン回帰モデル
ここでの目標
ポアソン回帰モデルの導入と
あてはまりの良さの検討方法
線形モデルの問題点
NS=Number of species, 島で観測されたカメの種類 → そもそも離散値 (上限なしのカウントデータ; 0,1,2,....,n,...)
線形モデルの限界
残差分析の結果 → 分散が一定とはいいがたい(モデルが不適切であることを示唆)
* 一般にAICや検定統計量の計算以前に残差はチェック(相関, 等分散 etc.)
モデルを改良することを考えてみる
22,,2,1 =i
統計モデルの導入
)(~ ii PoY µ
目的変数 ( i 番の島に生息するカメの種類)
最初のアイディア
→ 上限なしのカウントデータなのでポアソン分布で表現してはどうか?
各 i 番の島ごとの と説明変数たちをどう結び付けるか??
工夫を要する点
iµ
ポアソン回帰モデル
モデルのパラメータ, 51 ,,, ββα
ポアソン回帰モデル
∑=
+=5
1log
jijji xβαµ
22,,2,1 =i)(~ ii PoY µ
理屈はともかく、上のモデルで分析してみると・・・
∑=
+=5
1log
jijji xβαµ
22,,2,1 =i)(~ ii PoY µ
各推定値
,1000.7ˆ,1026.5ˆ,1026.5ˆ,48.3ˆ 33
42
41
−−− ×=×−=×== βββα3
53
4 1041.2ˆ,1055.4ˆ −− ×=×−= ββ
R プログラム例
> gala.glm.res <- glm(NS~. , family=poisson, data=gala.test);
モデルパラメータの推定
推定値は出るが, はたしてうまくいっているのか
ポアソン回帰の残差
)ˆˆ/log(2)ˆ,( iiiiiiii yyyydd µµµ +−==iiiDR dysignr )ˆ( µ−=
iiRR yr µ−=
Response Residuals 残差 = 実測値 - あてはめた値 をそのまま拡張定義
残差の定義
あてはめた値(Fitted Value)
注意: 線形モデルとちがって, 残差の定義の仕方が複数
+= ∑=
5
1
ˆˆexpˆj
jiji xβαµ
Deviance Residuals 残差 = モデルからのばらつきの尺度
残差プロット(Response Residualsの場合)
>plot(predict(gala.glm.res, type="link"), residuals(gala.glm.res, type="response"), xlab=expression(hat(log(mu))), ylab="Response Residuals", main="Galapagos Tortoise");
R プログラム例
# residuals(XXX, type=“response”), residuals(XXX, type=“deviance”)を用いて計算
3.0 3.5 4.0 4.5 5.0 5.5 6.0
-100
-50
050
100
150
Galapagos Tortoise
log^
Res
pons
e R
esid
uals
)ˆlog(µ
iiRR yr µ−=
残差のばらつきが右に行くほど大きくなっているようにも見える?
残差のばらつき具合
残差プロット(Response Residualsの場合)
今のモデルの場合 のばらつきは一定ではない!
線形モデルの場合
RRr
iiY µ=)(Var
]E[- ii YY のばらつき具合 (分散 )
)( iµ=2σ=
モデルが正しい場合の分散 3.0 3.5 4.0 4.5 5.0 5.5 6.0
-100
-50
050
100
150
Galapagos Tortoise
log^
Res
pons
e R
esid
uals
)ˆlog(µ
iiRR yr µ−=
→ Deviance Residualsは一定(次)
そのままのスケールだと, 左によってしまっている → log (mu) を横軸にとって残差プロットする
µ
> plot(predict(gala.glm.res, type="response"), residuals(gala.glm.res), xlab=expression(hat(mu)), ylab="Deviance Residuals", main="Galapagos Tortoise"); >
)ˆˆ/log(2)ˆ,( iiiiiiii yyyydd µµµ +−==
iiiDR dysignr )ˆ( µ−=
100 200 300 400
-50
510
Galapagos Tortoise
Dev
ianc
e R
esid
uals
R プログラム例
DRr
残差プロット(Deviance Residualsの場合)
Deviance Residuals
特徴的なパターンは見つからない (線形モデルに比べて当てはまりが良い!)
> plot(predict(gala.glm.res, type=“link"), residuals(gala.glm.res), xlab=expression(hat(log(mu))), ylab="Deviance Residuals", main="Galapagos Tortoise"); >
3.0 3.5 4.0 4.5 5.0 5.5 6.0
-50
510
Galapagos Tortoise
log^
Dev
ianc
e R
esid
uals
)ˆlog(µ
DRr
R プログラム例
残差プロット(Deviance Residualsの場合)
理解度チェック:ポアソン回帰
ここまでの結論として, 今回の分析では, 線形モデルよりもポアソン回帰モデルの方がよいモデルと考えられる.
今回の分析例では、ポアソン回帰があてはまっているとはいっても, パラメータの推定値がαを除いてほとんど0であり, 説明変数は無視できる結果になった.
ポアソン回帰では, Deviance Residuals が大きくばらついているほど、よりよいモデルであるといえる.
しかし, 実際のデータは分散が大きくみえることも多い
本来, ポアソン分布は期待値と分散は一致 (線形モデルよりパラメータが1つ少なかった!)
Overdispersion
iii YY µ== ][E)(Var
*詳細は文献を参照
よくある対処法
ポアソン回帰の注意点
1. 負の二項モデル (negative binomial model) 2. (GLMではなくなるが) ゼロ過剰モデル (zero-inflated model) / ゼロ切断モデル (zero-truncated model)/ hurdle model
3. 一般化線形モデル
Yは確率変数であり, X を固定して測定, 観測しても値はバラツクことを暗に仮定
Y: 目的変数 (例: カメの種類の数, 出生時の体重, 家賃, Oリングの破損率 etc. ) X: 説明変数 (例: 島の面積, 距離, 高度, 体内にいた期間, 徒歩距離, 温度 etc.)
ここまでの例をふりかえる
目的変数と説明変数の関係
1.実は目的変数Yの分布はなんでもよさそう
一般化に向けた視点
2.分布のパラメータ に説明変数が入ればよい?
)|(~ iii ypY µ
∑=
+=p
jijji x
1βαµ ∑
=
+=p
jijji x
1)log( βαµ
iµ
一般化線形モデル
1.Yの分布
iiY µ=][E
一般化線形モデル (Generalized Linear Model)
リンク関数
∑=
+=p
jijji xg
1)( βαµ
)(µg
指数型分布族
2.X, Yを結び付ける関係式 (モデルの解釈や計算の都合で設定)
指数型分布族: 正規分布, 二項分布、ポアソン分布などを含む広い確率分布のクラス(色々と性質が良い; 説明は次回以降?)
*Nelder and Wedderburn (1972)
ただし,
分布辞典
補足:高度な確率分布の扱い
1変数の連続分布に関する辞典 N. L. Johnson, S. Kotz, and N. Balakrishnan: Continuous Univariate Distributions, Volume 1 (Wiley Series in Probability and Statistics) 1変数の離散分布に関する辞典 N. L. Johnson, A.W. Kemp, and S. Kotz: Univariate Discrete Distributions (Wiley Series in Probability and Statistics)
(*多変数もある)
*しばしば, 無限級数表示, 積分表示などを用いる.