このページには,Twitterでつぶいやいてきた統計学のワンポイントレッスンを不定期でまとめます.
標本を2群に無作為に分けて1週間観察します.
A群: 二郎しか食べさせない
B群: 何も食べさせない
1週間後,A群は活発に活動していますが,B群は全く動かなくなってしまいました.
出典:@RinSakamichiより,一部改変して使用
このツイートはジョークですが,統計的因果推論の教材として有用と思います.「2群に無作為に分けていた」としても,この実験研究の何が問題だったかまじめに考えてみましょう.ヒントは,「操作なくして因果なし」と「SUTVA条件」です.
A群は「二郎しか食べさせない」,B群は「何も食べさせない」ので,一見すると,「二郎」を「食べる」か「食べない」か操作しているように見えます.しかし,実際には,我々は日常的にさまざまな食事を摂取しています.
A群は「二郎は食べさせるが他の食事はさせない」,B群は「二郎および他の食事もさせない」となっています.つまり,処置の定義があいまいで,SUTVA第2条件「個体に対する隠れた処置がない」を満たしていません.二郎以外に他の食事の摂取も操作されており,適切な因果推論ができない実験ですね.
なお,健康を害するおそれのある実験で倫理上の問題があり得るので,そもそも実際にこの実験を行うことは困難です.
この図は,1標本t検定,2標本t検定,回帰分析,共分散分析を図で表したものです.
1標本t検定は,説明変数が1の値をとる定数の場合の回帰分析です.1標本t検定とは,切片のみの回帰分析です.
2標本t検定は,説明変数が0または1の値をとる二値変数の場合の回帰分析です.赤い横線の縦方向の差が主な興味の対象です.
回帰分析は,説明変数が連続変数の場合ですね.図の直線の傾きが主な興味の対象です.
共分散分析は,2標本t検定と回帰分析を合体させたものと理解できます.2本の赤線の縦方向の差が主な興味の対象です.統計的因果推論において,重要な考え方を含むモデルです.
「相関があっても因果があるとは限らない」とよく言いますね.疑似相関と言われる話題です.では,「相関がなければ,因果はない」と言えるでしょうか? ここで,相関がないとは,計算した相関係数の値がほぼゼロであり,散布図でも何の関係性もありそうに見えない状態を想定します.
これも疑似相関の可能性があります.相関がなくても,因果はないとは限りません.具体的には,図のとおりです.x1とy1の相関係数はほぼゼロで,散布図上でも関係性はなさそうです.しかし,y1=1.0+1.2x1-1.5x2+εという関係があるので,x1からy1への因果効果はゼロではなく1.2です.
ところが,x1とx2の相関は正です(r=0.8).x2を除外して,x1とy1だけの二変量の関係性を見ていると,x2からy1への負の効果が交絡して,正と負の効果を打ち消します.その結果,x1とy1の相関係数がほぼゼロになります.なお,単回帰モデルy1=c0+c1x1におけるx1の回帰係数c1もほぼゼロです.
拙著『統計的因果推論の理論と実装』の表8.16で紹介しているnormtestパッケージはCRANから利用できない状態になっているようです.Rコードが少し煩雑ですが,ジャック・ベラの正規性検定は,図の方法で実行できます.JB1=171.33,JB2=2.9942で表8.16と同じ結果になります.なお, normtestパッケージのp値はモンテカルロ近似値なので,完全には一致しませんが,1個目のp値は0.0000,2個目のp値は0.2237で,本質的には同じ結果です.
Rでは,hist(x1)のようにすればヒストグラムを簡単に作成できますが,図のようにbreaks=seq(-3.1, 3.9, by=0.1)といった具合で指定すれば,ビンの幅を変更することも容易です.ポイントは,seq関数で生成する数値の範囲が,変数の最小値と最大値を必ず含むようにすることです.
たとえば,この変数x1の最大値は3.81なので,seq(-4.0, 4.0, by=0.3)としてしまうと,-4.0から3.8までの範囲になってしまうので,エラーが出ます.この場合,seq(-4.0, 4.1, by=0.3)とすればOKです.
Gujarati (2003, p.422)によると,元々Karl Pearsonの言っていた疑似相関(spurious correlation)とは,x1,x2,x3の相関係数が相互にゼロのとき,x1/x3とx2/x3が相関していることを疑似相関と言っていました(添付の図を参照).この用語の元々の意味では,実際にx1,x2,x3は相関していない訳です.
書誌情報:Gujarati, D. N. (2003) Basic Econometrics, 4th ed.
Rで円周率をモンテカルロ近似するには,図のとおりにすればよいです.PythonでもRでも,コードの構成は,ほぼ同じようにできます.理論的な解説はこちらのウェブサイトにあります.
計量分析セミナーで,添付の図1のX3のような中間変数の取り扱いについて質問がありました.改めて整理します.
図1:林・黒木(2016)にも解説があります.
図2:X3からX1への効果がなくても,結論は図1とほぼ同じです.
図3:X2からYへの直接効果がある場合,図1とは結論が異なります.
書誌情報:林岳彦・黒木学(2016)相関と因果と丸と矢印のはなし:はじめてのバックドア基準, IWANAMI DATA SCIENCE Vol.3, 岩波書店, pp.28-48.
多重共線性について,VIF=1/(1-Rj^2)なので,決定係数Rj^2が0.9であることと,VIFが10であることは等価です.よって,決定係数Rj^2で多重共線性の判断をしてもよいです.VIFで判断する理由は,式からわかるとおり,VIFは回帰係数の分散がどれだけインフレしているかを表現しているからです.
この図は,決定係数R^2の古典的な修正方法である「自由度修正済み決定係数」が何を修正しているかを解説したものです.
決定係数R^2はモデルに説明変数を追加すると大きくなる(厳密には非減少である)という致命的な欠陥が知られています.これに対して,古典的な修正法として,自由度修正済み決定係数が知られています.nを標本サイズ,kを変数の数とすると,分母をn – 1で割り,分子をn – kで割るものです.
しかし,定義式のままだと,何を修正しているのか分かりにくいかもしれません.少し式変形をすると,残差平方和(USS)を(n-1)/(n-k)倍していることが分かります.n-1はn-kよりも必ず大きいので,この部分でUSSが無意味に小さくなることに対してペナルティを与えているわけですね.
4枚の散布図のうち,ピアソンの積率相関係数がほぼゼロのものはどれでしょうか? 実は,いずれも相関係数はほぼゼロです.
相関係数はxとyの線形の関係を捉えるもので,いずれの図も線形の関係ではないですね.相関係数ゼロの図はいろいろです.
図1:xとyそれぞれ正規分布
図2:xとyそれぞれ一様分布
図3:xは一様分布,yは正規分布
図4:xは正規分布,y=x^2
ある検定試験の解説で「割合を示すには円グラフを利用するのが最も適当」とありました.円グラフではなく,パレート図を使うと,各項目の割合・累積割合・大小関係が一目瞭然です.Rでの作成方法は,以下のとおりです.
x1<-c(245,164,99,37,24,19,12)
x2<-x1/sum(x1)
library(qcc)
pareto.chart(x2)
注:以下のように,Rパッケージqccをインストールする必要があります.
install.packages("qcc")