浜中コードには、なぜか表3.4と表3.5が含まれていない。おそらくは浜中の教育的配慮–これまでの再現実験ができれば、この二つの表もすぐにできるはず、いや、やってごらんなさい–ということだと考えよう。
この表は、2006年のデータを用いており、対象は「全て」「民主主義国」「独裁国家」の3種類。この3種類のグループの「報道の自由」を、「産油国」と「非産油国」で比較する(片側t検定)というもの。なお、ロスの分析では等分散が前提とされている。
ロスの分析を参照すると、「民主主義国」と「独裁国家」は“democracy_update”の値を利用している(0なら独裁国家、1なら民主主義国)。「報道の自由」は“press_freedom”の値を使用し、産油国と非産油国の区別はこれまで通り“oil_gas_value100”の値を使用する(0なら非産油国、1なら産油国)。
これらのデータを元に、コードを作成する。
library(dplyr)#パッケージの展開
press<-filter(x,year==2006)#2006年を抽出し、"press"に格納
t.test(press_freedom~oil_gas_value100,data = press,
var.equal = T,alternative = "greater")
Two Sample t-test
data: press_freedom by oil_gas_value100
t = 2.4091, df = 167, p-value = 0.00854
alternative hypothesis: true difference in means is greater than 0
95 percent confidence interval:
2.988371 Inf
sample estimates:
mean in group 0 mean in group 1
54.04386 44.50909
結果はロスと一致する(ロスのp値は0.0085)。
まず、念のため「民主主義国」と「独裁国家」を区別する“democracy_update”の内容を確認する。
table(press$democracy_update)
0 1
74 97
独裁国家数(74ヶ国)、民主主義国(97ヶ国)がそれぞれ0と1で表されている。
これを元に、グループ分けを行なってから民主主義国の片側t検定を実施する。
#グループ分け
press_d<-filter(press,democracy_update==1)#民主主義国を"press_d"に格納
press_a<-filter(press,democracy_update==0)#独裁国家を"press_a"に格納
#等分散を前提として片側t検定を実行
t.test(press_freedom~oil_gas_value100,data = press_d,
var.equal = T,alternative = "greater")
Two Sample t-test
data: press_freedom by oil_gas_value100
t = -0.30431, df = 93, p-value = 0.6192
alternative hypothesis: true difference in means is greater than 0
95 percent confidence interval:
-8.13901 Inf
sample estimates:
mean in group 0 mean in group 1
65.70 66.96
このコードもロスの結果と一致する(ロスのp値は0.6192)。
t.test(press_freedom~oil_gas_value100,data=press_a,
alternative = "greater",var.equal = T)
Two Sample t-test
data: press_freedom by oil_gas_value100
t = 2.4617, df = 72, p-value = 0.008113
alternative hypothesis: true difference in means is greater than 0
95 percent confidence interval:
3.134068 Inf
sample estimates:
mean in group 0 mean in group 1
35.5 25.8
このコードもロスの分析結果と一致する(ロスのp値は0.0081)。
この表は、2006年のデータをサンプルとして、「政府の収入に関する情報」と「政府の支出に関する情報」が産油国と非産油国で異なるのかどうか、マン・ホイットニー・ウィルコクソン検定を行った結果である。マン・ホイットニー・ウィルコクソン検定は、表3.3で使用したものである。「非産油国」と「産油国」を区別するのはこれまでと同様に“oil_gas_value100”の値(0で非産油国、1で産油国)で行う。「政府の収入に関する情報」は“rev_data”、「政府の支出に関する情報」は“Govt_cons_data”を用いている。
まず、マン・ホイットニー・ウィルコクソン検定を行う。2006年のデータ抽出については、表3.4で“press”オブジェクトに格納しているので、これを使用する。
#パッケージの読み込み
library(coin)
#1行目の検定
wilcox_test(rev_data~as.factor(oil_gas_value100),data=press)
Asymptotic Wilcoxon-Mann-Whitney Test
data: rev_data by as.factor(oil_gas_value100) (0, 1)
Z = 1.7463, p-value = 0.08076
alternative hypothesis: true mu is not equal to 0
このコードのp値は0.08076であり、これはロスの分析におけるp値(0.0808)と一致する。
#2行目の検定
wilcox_test(Govt_cons_data~as.factor(oil_gas_value100),data=press)
Asymptotic Wilcoxon-Mann-Whitney Test
data: Govt_cons_data by as.factor(oil_gas_value100) (0, 1)
Z = 0.21694, p-value = 0.8283
alternative hypothesis: true mu is not equal to 0
このコードもロスの分析結果と一致する(p値は共に0.8283)
表3.5には、「収入に関する情報」と「支出に関する情報」を公表している割合が、非産油国と産油国ごとに表記されている。この数値はマン・ホイットニー・ウィルコクソン検定では表示されない。このため、改めてRでこの数値を計算して確認する必要がある。
変数のデータ数を数えて表示する関数に“table()”がある。また、それを割合表示する“prop.table()”関数がある。ここでは、この二つの関数を使って、各項目の割合を表示する。
#1行目「政府の収入に関する情報」の数値
prop.table(table(press$rev_data,press$oil_gas_value100),margin = 2)
0 1
0 0.3596491 0.5000000
1 0.6403509 0.5000000
行頭は“rev_data”(政府の収入に関する情報)を公表している(1)としていない(0)を、列頭はこれまでも用いてきた、産油国・非産油国を区別する“oil_gas_vaalue100”の0(非産油国)と1(産油国)を表している。
表3.5では「政府の収入に関する情報」を公表している国を表示しているため、上記の表では2行目を参照することになる。2行目の1列目(0、つまり非産油国)は64%であり、2列目(1、つまり産油国)は50%であるから、数値はロスの分析と一致する。
#2行目「政府の支出に関する情報」
prop.table(table(press$Govt_cons_data,press$oil_gas_value100),margin = 2)
0 1
0 0.09649123 0.10714286
1 0.90350877 0.89285714
上記1行目と同様に、2行目を見ればいいので、非産油国で90%、産油国で89%であり、ロスの分析と一致する。