SlideShare uma empresa Scribd logo
1 de 21
Stanで欠測データの
相関係数を推定してみた
@hoxo_m
2014/07/12
自己紹介
• hoxo_m
某ECサイトでデータ分析をやっています
• RPubsRecent
RPubs の新着エントリを流す Twitter Bot
フォロワー
200人達成!
欠測データ(Missing Data)
• とある学校の入学試験の得点 x
• 入学後の成績 y は x ≧ 60 のときのみ観測
x y
1 44.39524 NA
2 47.69823 NA
3 65.58708 62.34380
4 50.70508 NA
5 51.29288 NA
6 67.15065 71.00453
head(data)
欠測データ(Missing Data)
• 入学試験 60 点以上が合格
欠測データ(Missing Data)
このデータだけで
求めると
相関係数 = 0.55
灰色のデータまで使うと
相関係数 = 0.77
欠測データから求めた相関係数には
バイアスが生じる
今回の解析の目的
データに欠測があった場合に
正しく相関係数を推定したい
Stan で相関係数を求める
• 二変量正規分布
• 相関係数
21
12


Corr




























2
212
12
2
1
2
1
,




N
y
x
共分散
標準偏差
Stan で相関係数を求める
parameters {
vector[2] mu;
real<lower=0> var_x;
real<lower=0> var_y;
real cov;
}
transformed parameters {
matrix[2,2] sigma;
sigma[1,1] <- var_x;
sigma[2,1] <- cov;
sigma[1,2] <- cov;
sigma[2,2] <- var_y;
}
共分散
分散
分散共分散行列
平均
Stan で相関係数を求める
model{
for(i in 1:N)
y[i] ~ multi_normal(mu, sigma);
}
generated quantities {
real cor;
cor <- cov / sqrt(var_x * var_y);
}
参考:Stan で相関係数を推定する
http://qiita.com/hoxo_m/items/0f1b05681f5d6c4b560a
二変量正規分布
相関係数
Stan で相関係数を求める
mean se_mean sd 2.5% 25% 50% 75% 97.5%
mu[1] 65.54 0.01 0.39 64.76 65.29 65.54 65.81 66.27
mu[2] 63.42 0.02 0.69 62.02 62.96 63.42 63.87 64.75
var_x 22.46 0.11 2.63 17.98 20.61 22.20 24.05 28.05
var_y 74.19 0.34 8.92 59.32 67.83 73.58 79.49 94.19
cov 22.64 0.17 3.92 15.98 19.89 22.38 25.10 31.14
sigma[1,1] 22.46 0.11 2.63 17.98 20.61 22.20 24.05 28.05
sigma[1,2] 22.64 0.17 3.92 15.98 19.89 22.38 25.10 31.14
sigma[2,1] 22.64 0.17 3.92 15.98 19.89 22.38 25.10 31.14
sigma[2,2] 74.19 0.34 8.92 59.32 67.83 73.58 79.49 94.19
cor 0.55 0.00 0.06 0.44 0.52 0.56 0.59 0.66
lp__ -698.69 0.06 1.60 -702.49 -699.54 -698.39 -697.48 -696.59
data1 <- subset(data, !is.na(data$y))
datastan <- list(N=nrow(data1), y=data1)
fit <- stan(model_code=stancode, data=datastan,
iter=1000, chain=4)
print(fit, digit=2)
• x と y 両方そろっているデータのみを使う
と、相関係数は 0.55
• 真の相関係数は 0.77
• x のみ観測されたデータを加えることで、
精度を上げられないだろうか?
x y
1 44.39524 NA
2 47.69823 NA
3 65.58708 62.34380
• 観測データの尤度
を最大化する σ12 は一致推定量
  0:
2
11
1:
12
2
2
2
121 ),|(),,,,|,(
ii mi
i
mi
ii xpyxp 
星野 崇宏『調査観察データの統計科学』(p.31)
http://www.amazon.co.jp/dp/4000069721
• 観測データの尤度
  0:
2
11
1:
12
2
2
2
121 ),|(),,,,|,(
ii mi
i
mi
ii xpyxp 
二変量正規分布 正規分布
m は欠測インジケータ(mi=0 のとき yi は欠測)
increment_log_prob()
• 対数事後分布に自由に尤度を追加できる
関数
• これを用いて、二変量正規分布のモデル
に正規分布の対数尤度を追加する
2
1
2
12
1
2
)(
)2log(
2
1




 ix
increment_log_prob()
data{
int<lower=0> N;
vector[2] y[N];
int<lower=0> Nmiss;
real x[Nmiss];
}
...
model{
for(i in 1:N)
y[i] ~ multi_normal(mu, sigma);
for(i in 1:Nmiss)
increment_log_prob(-0.5 * log(2 * pi() * sigma[1,1])
- 0.5 * ((x[i] - mu[1])^2)/sigma[1,1]);
}
increment_log_prob()
mean se_mean sd 2.5% 25% 50% 75% 97.5%
mu[1] 50.17 0.01 0.30 49.58 49.96 50.17 50.37 50.74
mu[2] 48.32 0.09 1.98 44.24 47.06 48.36 49.62 52.34
var_x 98.61 0.15 4.39 90.43 95.56 98.56 101.61 107.55
var_y 147.35 1.16 24.86 101.85 130.51 145.74 162.11 203.76
cov 96.75 0.61 12.96 70.47 88.04 96.66 105.29 123.78
sigma[1,1] 98.61 0.15 4.39 90.43 95.56 98.56 101.61 107.55
sigma[1,2] 96.75 0.61 12.96 70.47 88.04 96.66 105.29 123.78
sigma[2,1] 96.75 0.61 12.96 70.47 88.04 96.66 105.29 123.78
sigma[2,2] 147.35 1.16 24.86 101.85 130.51 145.74 162.11 203.76
cor 0.80 0.00 0.04 0.71 0.78 0.81 0.83 0.87
lp__ -3955.27 0.06 1.61 -3959.13 -3956.11 -3954.96 -3954.10 -3953.20
data2 <- subset(data, is.na(data$y))
datastan <- list(N=nrow(data1), y=data1, x=data2$x,
Nmiss=nrow(data2))
fit <- stan(model_code=stancode, data=datastan, iter=1000,
chain=4)
print(fit, digit=2)
結果
• 推定値:0.55 ⇒ 0.80
• 真値:0.77
• y が欠測している場合の x の値を使って、
推定を良くすることができた。
ところで・・・
increment_log_prob() 使わなくても
model に正規分布を追加すればOK?
data{
int<lower=0> N;
vector[2] y[N];
int<lower=0> Nmiss;
real x[Nmiss];
}
...
model{
for(i in 1:N)
y[i] ~ multi_normal(mu, sigma);
for(i in 1:Nmiss)
x[i] ~ normal(mu[1], sqrt(sigma[1,1]));
}
• model に式(sampling statementという
らしい)を追加することと、対数尤度関数
を追加することは同じこと。
• 遠回りしましたが、少しだけ Stan の理解
が深まったように思います。
謝辞

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

ベイズファクターとモデル選択
ベイズファクターとモデル選択ベイズファクターとモデル選択
ベイズファクターとモデル選択
 
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
 
負の二項分布について
負の二項分布について負の二項分布について
負の二項分布について
 
MCMCでマルチレベルモデル
MCMCでマルチレベルモデルMCMCでマルチレベルモデル
MCMCでマルチレベルモデル
 
Rで因子分析 商用ソフトで実行できない因子分析のあれこれ
Rで因子分析 商用ソフトで実行できない因子分析のあれこれRで因子分析 商用ソフトで実行できない因子分析のあれこれ
Rで因子分析 商用ソフトで実行できない因子分析のあれこれ
 
StanとRでベイズ統計モデリング読書会 Chapter 7(7.6-7.9) 回帰分析の悩みどころ ~統計の力で歌うまになりたい~
StanとRでベイズ統計モデリング読書会 Chapter 7(7.6-7.9) 回帰分析の悩みどころ ~統計の力で歌うまになりたい~StanとRでベイズ統計モデリング読書会 Chapter 7(7.6-7.9) 回帰分析の悩みどころ ~統計の力で歌うまになりたい~
StanとRでベイズ統計モデリング読書会 Chapter 7(7.6-7.9) 回帰分析の悩みどころ ~統計の力で歌うまになりたい~
 
階層ベイズと自由エネルギー
階層ベイズと自由エネルギー階層ベイズと自由エネルギー
階層ベイズと自由エネルギー
 
Cmdstanr入門とreduce_sum()解説
Cmdstanr入門とreduce_sum()解説Cmdstanr入門とreduce_sum()解説
Cmdstanr入門とreduce_sum()解説
 
社会心理学とGlmm
社会心理学とGlmm社会心理学とGlmm
社会心理学とGlmm
 
Chapter9 一歩進んだ文法(前半)
Chapter9 一歩進んだ文法(前半)Chapter9 一歩進んだ文法(前半)
Chapter9 一歩進んだ文法(前半)
 
あなたの心にBridgeSampling
あなたの心にBridgeSamplingあなたの心にBridgeSampling
あなたの心にBridgeSampling
 
第4回DARM勉強会 (構造方程式モデリング)
第4回DARM勉強会 (構造方程式モデリング)第4回DARM勉強会 (構造方程式モデリング)
第4回DARM勉強会 (構造方程式モデリング)
 
SEMを用いた縦断データの解析 潜在曲線モデル
SEMを用いた縦断データの解析 潜在曲線モデルSEMを用いた縦断データの解析 潜在曲線モデル
SEMを用いた縦断データの解析 潜在曲線モデル
 
Stan勉強会資料(前編)
Stan勉強会資料(前編) Stan勉強会資料(前編)
Stan勉強会資料(前編)
 
StanとRでベイズ統計モデリング読書会Ch.9
StanとRでベイズ統計モデリング読書会Ch.9StanとRでベイズ統計モデリング読書会Ch.9
StanとRでベイズ統計モデリング読書会Ch.9
 
RとStanで分散分析
RとStanで分散分析RとStanで分散分析
RとStanで分散分析
 
心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ
 
ベイズモデリングで見る因子分析
ベイズモデリングで見る因子分析ベイズモデリングで見る因子分析
ベイズモデリングで見る因子分析
 
DARM勉強会第3回 (missing data analysis)
DARM勉強会第3回 (missing data analysis)DARM勉強会第3回 (missing data analysis)
DARM勉強会第3回 (missing data analysis)
 
Chapter7 回帰分析の悩みどころ
Chapter7 回帰分析の悩みどころChapter7 回帰分析の悩みどころ
Chapter7 回帰分析の悩みどころ
 

Semelhante a Stan で欠測データの相関係数を推定してみた

Rm20140507 4key
Rm20140507 4keyRm20140507 4key
Rm20140507 4key
youwatari
 
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tatsuya Tojima
 
ビッグデータとは
ビッグデータとはビッグデータとは
ビッグデータとは
Takafumi Nakanishi
 

Semelhante a Stan で欠測データの相関係数を推定してみた (13)

心理学者のためのJASP入門(操作編)[説明文をよんでください]
心理学者のためのJASP入門(操作編)[説明文をよんでください]心理学者のためのJASP入門(操作編)[説明文をよんでください]
心理学者のためのJASP入門(操作編)[説明文をよんでください]
 
順序データでもベイズモデリング
順序データでもベイズモデリング順序データでもベイズモデリング
順序データでもベイズモデリング
 
Rm20140507 4key
Rm20140507 4keyRm20140507 4key
Rm20140507 4key
 
統計学基礎
統計学基礎統計学基礎
統計学基礎
 
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
 
重回帰分析による推薦の透明性を有したモデルベース協調フィルタリング
重回帰分析による推薦の透明性を有したモデルベース協調フィルタリング重回帰分析による推薦の透明性を有したモデルベース協調フィルタリング
重回帰分析による推薦の透明性を有したモデルベース協調フィルタリング
 
Rm20140702 11key
Rm20140702 11keyRm20140702 11key
Rm20140702 11key
 
因果探索: 観察データから 因果仮説を探索する
因果探索: 観察データから因果仮説を探索する因果探索: 観察データから因果仮説を探索する
因果探索: 観察データから 因果仮説を探索する
 
20190512 bayes hands-on
20190512 bayes hands-on20190512 bayes hands-on
20190512 bayes hands-on
 
反応時間データをどう分析し図示するか
反応時間データをどう分析し図示するか反応時間データをどう分析し図示するか
反応時間データをどう分析し図示するか
 
みどりぼん読書会 第4章
みどりぼん読書会 第4章みどりぼん読書会 第4章
みどりぼん読書会 第4章
 
ビッグデータとは
ビッグデータとはビッグデータとは
ビッグデータとは
 
実践データ分析基礎
実践データ分析基礎実践データ分析基礎
実践データ分析基礎
 

Mais de hoxo_m

データの不備を統計的に見抜く (Gelman’s secret weapon)
データの不備を統計的に見抜く (Gelman’s secret weapon)データの不備を統計的に見抜く (Gelman’s secret weapon)
データの不備を統計的に見抜く (Gelman’s secret weapon)
hoxo_m
 
カップルが一緒にお風呂に入る割合をベイズ推定してみた
カップルが一緒にお風呂に入る割合をベイズ推定してみたカップルが一緒にお風呂に入る割合をベイズ推定してみた
カップルが一緒にお風呂に入る割合をベイズ推定してみた
hoxo_m
 
チェビシェフの不等式
チェビシェフの不等式チェビシェフの不等式
チェビシェフの不等式
hoxo_m
 
swirl パッケージでインタラクティブ学習
swirl パッケージでインタラクティブ学習swirl パッケージでインタラクティブ学習
swirl パッケージでインタラクティブ学習
hoxo_m
 

Mais de hoxo_m (20)

Shinyユーザのための非同期プログラミング入門
Shinyユーザのための非同期プログラミング入門Shinyユーザのための非同期プログラミング入門
Shinyユーザのための非同期プログラミング入門
 
Prophet入門【理論編】Facebookの時系列予測ツール
Prophet入門【理論編】Facebookの時系列予測ツールProphet入門【理論編】Facebookの時系列予測ツール
Prophet入門【理論編】Facebookの時系列予測ツール
 
Prophet入門【R編】Facebookの時系列予測ツール
Prophet入門【R編】Facebookの時系列予測ツールProphet入門【R編】Facebookの時系列予測ツール
Prophet入門【R編】Facebookの時系列予測ツール
 
機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門
 
学習係数
学習係数学習係数
学習係数
 
Prophet入門【Python編】Facebookの時系列予測ツール
Prophet入門【Python編】Facebookの時系列予測ツールProphet入門【Python編】Facebookの時系列予測ツール
Prophet入門【Python編】Facebookの時系列予測ツール
 
AJAXサイトの情報をWebスクレイピング
AJAXサイトの情報をWebスクレイピングAJAXサイトの情報をWebスクレイピング
AJAXサイトの情報をWebスクレイピング
 
高速なガンマ分布の最尤推定法について
高速なガンマ分布の最尤推定法について高速なガンマ分布の最尤推定法について
高速なガンマ分布の最尤推定法について
 
経験過程
経験過程経験過程
経験過程
 
確率論基礎
確率論基礎確率論基礎
確率論基礎
 
シンギュラリティを知らずに機械学習を語るな
シンギュラリティを知らずに機械学習を語るなシンギュラリティを知らずに機械学習を語るな
シンギュラリティを知らずに機械学習を語るな
 
非制約最小二乗密度比推定法 uLSIF を用いた外れ値検出
非制約最小二乗密度比推定法 uLSIF を用いた外れ値検出非制約最小二乗密度比推定法 uLSIF を用いた外れ値検出
非制約最小二乗密度比推定法 uLSIF を用いた外れ値検出
 
トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?
 
トピックモデルの評価指標 Coherence 研究まとめ #トピ本
トピックモデルの評価指標 Coherence 研究まとめ #トピ本トピックモデルの評価指標 Coherence 研究まとめ #トピ本
トピックモデルの評価指標 Coherence 研究まとめ #トピ本
 
トピックモデルによる統計的潜在意味解析読書会 3.7 評価方法 - 3.9 モデル選択 #トピ本
トピックモデルによる統計的潜在意味解析読書会 3.7 評価方法 - 3.9 モデル選択 #トピ本トピックモデルによる統計的潜在意味解析読書会 3.7 評価方法 - 3.9 モデル選択 #トピ本
トピックモデルによる統計的潜在意味解析読書会 3.7 評価方法 - 3.9 モデル選択 #トピ本
 
協調フィルタリング入門
協調フィルタリング入門協調フィルタリング入門
協調フィルタリング入門
 
データの不備を統計的に見抜く (Gelman’s secret weapon)
データの不備を統計的に見抜く (Gelman’s secret weapon)データの不備を統計的に見抜く (Gelman’s secret weapon)
データの不備を統計的に見抜く (Gelman’s secret weapon)
 
カップルが一緒にお風呂に入る割合をベイズ推定してみた
カップルが一緒にお風呂に入る割合をベイズ推定してみたカップルが一緒にお風呂に入る割合をベイズ推定してみた
カップルが一緒にお風呂に入る割合をベイズ推定してみた
 
チェビシェフの不等式
チェビシェフの不等式チェビシェフの不等式
チェビシェフの不等式
 
swirl パッケージでインタラクティブ学習
swirl パッケージでインタラクティブ学習swirl パッケージでインタラクティブ学習
swirl パッケージでインタラクティブ学習
 

Stan で欠測データの相関係数を推定してみた