『石油の呪い』表3.3の確認

データを読み込む。

load("Replication data for The Oil Curse - Ross 2012.RData")

浜中コードの確認

コメントアウトは松尾による。

#1行目「すべての国家」の検定
wilcox.test(budget_open08~oil_gas_value100,data=x)
#パッケージの読み込み
library(dplyr)
#グループの作成
dem<-filter(x,democracy==1)#民主主義国家
aut<-filter(x,democracy==0)#独裁国家
#検定
#2行目 民主主義国家における非産油国・産油国の透明性の差の検定
wilcox.test(budget_open08~oil_gas_value100,data=dem)
#3行目 独裁国家における非産油国・産油国の透明性の差の検定
wilcox.test(budget_open08~oil_gas_value100,data=aut)

浜中コードは、産油国・非産油国を分ける変数として“oil_gas_value100”を使用しているが、これはロスの分析と一致しない。ロスはここに“oil_gas_value100_2006”を使用しているので、変数を変更する必要がある。また、表の記述とは一致するものの、厳密には浜中コードはロスの分析結果とはp値が異なる。

まず、浜中コードの結果を参照する。


    Wilcoxon rank sum test with continuity correction

data:  budget_open08 by oil_gas_value100
W = 897, p-value = 0.6144
alternative hypothesis: true location shift is not equal to 0
Warning in wilcox.test.default(x = c(37, 42, 57, 45, 62, 64, 12, 87, 53, :
cannot compute exact p-value with ties

    Wilcoxon rank sum test with continuity correction

data:  budget_open08 by oil_gas_value100
W = 216, p-value = 0.1483
alternative hypothesis: true location shift is not equal to 0
Warning in wilcox.test.default(x = c(8, 14, 44, 62, 14, 5, 13, 53, 11,
32, : cannot compute exact p-value with ties

    Wilcoxon rank sum test with continuity correction

data:  budget_open08 by oil_gas_value100
W = 206, p-value = 0.02876
alternative hypothesis: true location shift is not equal to 0

浜中コードでは、p値は1行目が0.6144、2行目0.1483、3行目が0.02876である。これに対してロスの分析では、1行目のp値は0.9321、2行目は0.0574、3行目は0.0275である。また、浜中コードを用いると2行目と3行目の検定で「タイがあるため、正確な p 値を計算することができません(Warning in wilcox.test.defaul…:cannot compute exact p-value with ties)」という警告が出る。この警告を無視しても構わないとする見解もあり(青木 2009)、警告が出ているから問題ということにはならないが、p値も異なることから、ここでは別の関数を用いて検定を実施する。

上記の警告を出さない対応として、coinパッケージの“wilcoxon_test”関数を用いる方法がある。この関数は二つ目の引数をfactor形式にする必要がある。表3.3の分析では二つ目の引数は上記の通り“oil_gas_value100_2006”だが、ロスのデータをRで読み込むとこのデータは“numeric”である。

class(x$oil_gas_value100_2006)
[1] "numeric"

このため、同変数を“factor”に変換して使用する必要がある。

上記を反映して修正したコードとその結果は以下の通り。

修正コード

#パッケージの展開
library(coin)
#1行目の検定
wilcox_test(budget_open08~as.factor(oil_gas_value100_2006),data=x)

    Asymptotic Wilcoxon-Mann-Whitney Test

data:  budget_open08 by
     as.factor(oil_gas_value100_2006) (0, 1)
Z = 0.085241, p-value = 0.9321
alternative hypothesis: true mu is not equal to 0
#民主主義国グループの作成と2行目の検定
dem2<-filter(x,democracy==1)
wilcox_test(budget_open08~as.factor(oil_gas_value100_2006),data=dem2)

    Asymptotic Wilcoxon-Mann-Whitney Test

data:  budget_open08 by
     as.factor(oil_gas_value100_2006) (0, 1)
Z = -1.9, p-value = 0.05743
alternative hypothesis: true mu is not equal to 0
#独裁国グループの作成と3行目の検定
aut2<-filter(x,democracy==0)
wilcox_test(budget_open08~as.factor(oil_gas_value100_2006),data=aut2)

    Asymptotic Wilcoxon-Mann-Whitney Test

data:  budget_open08 by
     as.factor(oil_gas_value100_2006) (0, 1)
Z = 2.2041, p-value = 0.02751
alternative hypothesis: true mu is not equal to 0

これでロスの分析結果と一致する。