練習問題2.8.1
1
> #1
> #データ読み込み
> star <- read.csv("STAR.csv")
> #基本統計量
> dim(star)
[1] 6325 6
> summary(star)#省略
> #kinder作成
> star$kinder <- NA
> star$kinder[star$classtype == 1] <- "small"
> star$kinder[star$classtype == 2] <- "middle"
> star$kinder[star$classtype == 3] <- "big"
> star$kinder <- as.factor(star$kinder)
> #race上書き
> star$race[star$race == 1] <- "white"
> star$race[star$race == 2] <- "black"
> star$race[star$race == 4] <- "hispanic"
> star$race[star$race == 3 | star$race == 5| star$race == 6] <- "others"
> star$race <- as.factor(star$race)
2
> #2
> #部分集合
> small <- subset(star,star$kinder == "small")
> middle <- subset(star,star$kinder == "middle")
> #点数
> mean(small$g4math, na.rm = TRUE)
[1] 709.1851
> mean(small$g4reading, na.rm = TRUE)
[1] 723.3912
> mean(middle$g4math, na.rm = TRUE)
[1] 709.5214
> mean(middle$g4reading, na.rm = TRUE)
[1] 719.89
> #標準偏差
> sd(small$g4math, na.rm = TRUE)
[1] 43.57318
> sd(small$g4reading, na.rm = TRUE)
[1] 51.54494
> sd(middle$g4math, na.rm = TRUE)
[1] 41.02063
> sd(middle$g4reading, na.rm = TRUE)
[1] 53.16788
算数の平均点は少人数クラスのほうが、約0.34点低い
読解の平均点は少人数クラスのほうが、約4.1点高い
算数の標準偏差は少人数クラスのほうが、約2.55大きい
読解の標準偏差は少人数クラスのほうが、約1.62小さい
算数の成績は少人数クラスのほうが成績が良いとは言えないが、読解の成績は平均点が高くかつ標準偏差が小さいことから、少人数クラスのほうが読解の成績が良いと言える。
イワマ
イワマ
3
> #3
> #3分位置
> quantile(small$g4math, probs = seq(from = 0, to = 1, by = 1/3) , na.rm = TRUE)
0% 33.33333% 66.66667% 100%
487 695 726 821
> quantile(small$g4reading, probs = seq(from = 0, to = 1, by = 1/3) , na.rm = TRUE)
0% 33.33333% 66.66667% 100%
528 705 741 836
> quantile(middle$g4math, probs = seq(from = 0, to = 1, by = 1/3) , na.rm = TRUE)
0% 33.33333% 66.66667% 100%
487 696 725 821
> quantile(middle$g4reading, probs = seq(from = 0, to = 1, by = 1/3) , na.rm = TRUE)
0% 33.33333% 66.66667% 100%
528 705 740 836
少人数クラスでも標準規模クラスでも、両教科の分位値に大きな違いはない。
読解では少人数クラスのほうが平均点が高いが、最低点・最高点等や分位値のところはクラスによる差がないと言える。
第1三分位値数と第2三分位値数の間にいる人たち、つまり平均点付近にいる人たちの成績は少人数クラスの集団が良いと言える可能性がある。
イワマ
イワマ
イワマ
4
> #4
> #分割表
> year.kinder.tab <- table(year = star$yearssmall, kinder = star$kinder)
> year.kinder.tab
kinder
year big middle small
0 1996 1961 0
1 97 95 576
2 60 58 272
3 78 80 195
4 0 0 857
> #少人数クラス期間別算数平均
> tapply(star$g4math, star$yearssmall, mean, na.rm = TRUE)
0 1 2 3 4
707.9793 707.5524 711.9140 709.6170 710.0519
> #少人数クラス期間別算数中央値
> tapply(star$g4math, star$yearssmall, median, na.rm = TRUE)
0 1 2 3 4
710 709 714 712 711
> #少人数クラス期間別国語平均
> tapply(star$g4reading, star$yearssmall, mean, na.rm = TRUE)
0 1 2 3 4
719.8754 723.1471 717.8681 719.8986 724.6651
> #少人数クラス期間別国語中央値
> tapply(star$g4reading, star$yearssmall, median, na.rm = TRUE)
0 1 2 3 4
722.0 724.5 720.0 721.0 726.0
分割表の記述については省略
算数の成績は少人数クラスの2年間在籍している集団が平均点も中央値も一番高く、在籍している期間が長いほど成績が良いわけではなかった。
国語の成績は少人数クラスに一番長く(4年間)在籍している集団が平均点も中央値も一番高いが、在籍している期間が長いほど成績が良いわけではなく、国語は1年間在籍している集団が2,3年間所属している集団より成績が高かった。
イワマ
5
> #5
> #中人数クラス人種別算数平均
> tapply(middle$g4math, middle$race, mean, na.rm = TRUE)
black hispanic others white
698.5323 NA 713.0000 711.4104
> #中人数クラス人種別国語平均
> tapply(middle$g4reading, middle$race, mean, na.rm = TRUE)
black hispanic others white
689.3548 NA 741.5000 725.1158
> #少人数クラス人種別算数平均
> tapply(small$g4math, small$race, mean, na.rm = TRUE)
black hispanic others white
697.5043 739.5000 728.0000 711.1900
> #少人数クラス人種別国語平均
> tapply(small$g4reading, small$race, mean, na.rm = TRUE)
black hispanic others white
698.6140 737.5000 769.5000 727.8388
標準規模クラスでは人種間に学力の違いがあり、算数では約12.88点、読解では約35.76点、白人の方が黒人より平均点が高い。
ヒスパニック系についてはデータがなかった。
少人数クラスでも人種間に学力の違いがあり、算数では約13.69点、読解では約29.22点、白人の方が黒人より平均点が高い。
逆にマイノリティでもヒスパニック系は、算数で約28点、読解で約10点、白人より平均点が高い。
白人と黒人については、算数では少人数クラスのほうが人種間の学力差が広がっている。国語では逆に少人数クラスのほうが学力差が縮まっている。
イワマ
イワマ
6
> #6
> #クラス別卒業率
> tapply(star$hsgrad, star$kinder, mean, na.rm = TRUE)
big middle small
0.8392857 0.8251619 0.8359202
> #少人数クラス期間別別卒業率
> tapply(star$hsgrad, star$yearssmall, mean, na.rm = TRUE)
0 1 2 3 4
0.8286020 0.7910448 0.8131868 0.8324607 0.8775510
>#人種別卒業率
> tapply(middle$hsgrad, middle$race, mean, na.rm = TRUE)
black hispanic others white
0.7395833 NA 0.6666667 0.8569620
> tapply(small$hsgrad, small$race, mean, na.rm = TRUE)
black hispanic others white
0.7446809 NaN 1.0000000 0.8674699
補助教員付きのクラスが高卒できた割合が一番高い
少人数クラスに在籍していた集団のなかでは、少人数クラスに在籍すればするほど高卒できた割合が高い。しかし、少人数クラスに在籍したことがなかった集団に比べて、少人数クラスに在籍していた年数が1年、2年の集団は高卒できた割が約3%、約1.5%それぞれ低い。
標準規模クラスでは、白人のほうが黒人に比べて高卒できた割合が11.74%で、少人数クラスでは、白人のほうが黒人に比べて高卒できた割合が12.28%であった。そのため、STARプロジェクトはマイノリティの卒業格差を縮めたとは言えない。
イワマ
イワマ
練習問題2.8.2
1
> #1
> #データ読み込み
> gay <- read.csv("gay.csv")
> #基本統計量
> dim(gay)
[1] 69592 4
> summary(gay)#省略
> #ベースラインインタビュー変数作成
> wave1 <- subset(gay, gay$study == 1 & gay$wave == 1)
> #バイアスが無いか調べる
> tapply(wave1$ssm, wave1$treatment, mean)
No Contact
3.042764
Recycling Script by Gay Canvasser
3.130975
Recycling Script by Straight Canvasser
3.013474
Same-Sex Marriage Script by Gay Canvasser
3.025195
Same-Sex Marriage Script by Straight Canvasser
3.099710
2
[codebox title="コード"]
> #2
> #第2波調査
> wave2 <- subset(gay, gay$study == 1 & gay$wave == 2)
#ゲイ調査員のトリートメント効果
> (mean(wave2$ssm[wave2$treatment == "Same-Sex Marriage Script by Gay Canvasser"])-mean(wave1$ssm[wave1$treatment == "Same-Sex Marriage Script by Gay Canvasser"]))-(mean(wave2$ssm[wave2$treatment == "No Contact"])-mean(wave1$ssm[wave1$treatment == "No Contact"]))
[1] 0.1174436
#ストレート調査員のトリートメント効果
> (mean(wave2$ssm[wave2$treatment == "Same-Sex Marriage Script by Straight Canvasser"])-mean(wave1$ssm[wave1$treatment == "Same-Sex Marriage Script by Straight Canvasser"]))-(mean(wave2$ssm[wave2$treatment == "No Contact"])-mean(wave1$ssm[wave1$treatment == "No Contact"]))
[1] 0.0653028
ゲイ調査員が訪問した方が、約0.052点同性婚の対する支持が高くなる。
3
> #3
#ゲイがリサイクルを勧めた場合
> (mean(wave2$ssm[wave2$treatment == "Recycling Script by Gay Canvasser"])-mean(wave1$ssm[wave1$treatment == "Recycling Script by Gay Canvasser"]))-(mean(wave2$ssm[wave2$treatment == "No Contact"])-mean(wave1$ssm[wave1$treatment == "No Contact"]))
[1] -0.02037848
#ストレートがリサイクルを勧めた場合
> (mean(wave2$ssm[wave2$treatment == "Recycling Script by Straight Canvasser"])-mean(wave1$ssm[wave1$treatment == "Recycling Script by Straight Canvasser"]))-(mean(wave2$ssm[wave2$treatment == "No Contact"])-mean(wave1$ssm[wave1$treatment == "No Contact"]))
[1] -0.006046567
どんな内容であれゲイの人(またはストレートの人)が訪問した場合によるバイアスを確かめるため。
ゲイであれストレートであれ、同性婚に対する支持の点数は減るないし、ほぼ変化はない。
そのため、訪問した人が同性婚以外の内容を話すことについてのバイアスは存在しない可能性が高いと言える。
4
#WAVE4
> wave4 <- subset(gay, gay$study == 1 & gay$wave == 4)
> (mean(wave4$ssm[wave4$treatment == "Same-Sex Marriage Script by Gay Canvasser"])-mean(wave1$ssm[wave1$treatment == "Same-Sex Marriage Script by Gay Canvasser"]))-(mean(wave4$ssm[wave4$treatment == "No Contact"])-mean(wave1$ssm[wave1$treatment == "No Contact"]))
[1] 0.1101947
> (mean(wave4$ssm[wave4$treatment == "Same-Sex Marriage Script by Straight Canvasser"])-mean(wave1$ssm[wave1$treatment == "Same-Sex Marriage Script by Straight Canvasser"]))-(mean(wave4$ssm[wave4$treatment == "No Contact"])-mean(wave1$ssm[wave1$treatment == "No Contact"]))
[1] 0.03025142
#WAVE5
> wave5 <- subset(gay, gay$study == 1 & gay$wave == 5)
> (mean(wave5$ssm[wave5$treatment == "Same-Sex Marriage Script by Gay Canvasser"])-mean(wave1$ssm[wave1$treatment == "Same-Sex Marriage Script by Gay Canvasser"]))-(mean(wave5$ssm[wave5$treatment == "No Contact"])-mean(wave1$ssm[wave1$treatment == "No Contact"]))
[1] 0.1654644
> (mean(wave5$ssm[wave5$treatment == "Same-Sex Marriage Script by Straight Canvasser"])-mean(wave1$ssm[wave1$treatment == "Same-Sex Marriage Script by Straight Canvasser"]))-(mean(wave5$ssm[wave5$treatment == "No Contact"])-mean(wave1$ssm[wave1$treatment == "No Contact"]))
[1] 0.04161006
#WAVE6
> wave6 <- subset(gay, gay$study == 1 & gay$wave == 6)
> (mean(wave6$ssm[wave6$treatment == "Same-Sex Marriage Script by Gay Canvasser"])-mean(wave1$ssm[wave1$treatment == "Same-Sex Marriage Script by Gay Canvasser"]))-(mean(wave6$ssm[wave6$treatment == "No Contact"])-mean(wave1$ssm[wave1$treatment == "No Contact"]))
[1] 0.1040044
> (mean(wave6$ssm[wave6$treatment == "Same-Sex Marriage Script by Straight Canvasser"])-mean(wave1$ssm[wave1$treatment == "Same-Sex Marriage Script by Straight Canvasser"]))-(mean(wave6$ssm[wave6$treatment == "No Contact"])-mean(wave1$ssm[wave1$treatment == "No Contact"]))
[1] 0.006570065
#WAVE7
> wave7 <- subset(gay, gay$study == 1 & gay$wave == 7)
> (mean(wave7$ssm[wave7$treatment == "Same-Sex Marriage Script by Gay Canvasser"])-mean(wave1$ssm[wave1$treatment == "Same-Sex Marriage Script by Gay Canvasser"]))-(mean(wave7$ssm[wave7$treatment == "No Contact"])-mean(wave1$ssm[wave1$treatment == "No Contact"]))
[1] 0.07693728
> (mean(wave7$ssm[wave7$treatment == "Same-Sex Marriage Script by Straight Canvasser"])-mean(wave1$ssm[wave1$treatment == "Same-Sex Marriage Script by Straight Canvasser"]))-(mean(wave7$ssm[wave7$treatment == "No Contact"])-mean(wave1$ssm[wave1$treatment == "No Contact"]))
[1] -0.09948238
結果は省略
全体的に5波までは効果は高くなる傾向だったが、1年後の第7波は第2波に比べて減少してしまっている。
それでも、ゲイが訪問員として同性婚台本を用いた場合の条件では戸別訪問の効果は持続していると言える。
イワマ
5
> #5
> wave1.2 <- subset(gay, gay$study == 2 & gay$wave == 1)
> tapply(wave1.2$ssm, wave1.2$treatment, mean)
No Contact
2.970075
Recycling Script by Gay Canvasser
NA
Recycling Script by Straight Canvasser
NA
Same-Sex Marriage Script by Gay Canvasser
2.971729
Same-Sex Marriage Script by Straight Canvasser
NA
変化が大きくないため、ランダム化は適切に行われていると言える
6
> #6
> wave2.2 <- subset(gay, gay$study == 2 & gay$wave == 2)
> (mean(wave2.2$ssm[wave2.2$treatment == "Same-Sex Marriage Script by Gay Canvasser"])-mean(wave1.2$ssm[wave1.2$treatment == "Same-Sex Marriage Script by Gay Canvasser"]))-(mean(wave2.2$ssm[wave2.2$treatment == "No Contact"])-mean(wave1.2$ssm[wave1.2$treatment == "No Contact"]))
[1] 0.1222399
研究1でのゲイによるトリートメント効果は0.1174436、研究2では0.1222399で、そこまで大きな差はなかった。
よってほぼ一致してると言える。
7
> #7
>#WAVE3
> wave3.2 <- subset(gay, gay$study == 2 & gay$wave == 3)
> (mean(wave3.2$ssm[wave3.2$treatment == "Same-Sex Marriage Script by Gay Canvasser"])-mean(wave1.2$ssm[wave1.2$treatment == "Same-Sex Marriage Script by Gay Canvasser"]))-(mean(wave3.2$ssm[wave3.2$treatment == "No Contact"])-mean(wave1.2$ssm[wave1.2$treatment == "No Contact"]))
[1] 0.1487668
>#WAVE4
> wave4.2 <- subset(gay, gay$study == 2 & gay$wave == 4)
> (mean(wave4.2$ssm[wave4.2$treatment == "Same-Sex Marriage Script by Gay Canvasser"])-mean(wave1.2$ssm[wave1.2$treatment == "Same-Sex Marriage Script by Gay Canvasser"]))-(mean(wave4.2$ssm[wave4.2$treatment == "No Contact"])-mean(wave1.2$ssm[wave1.2$treatment == "No Contact"]))
[1] 0.12352
> #WAVE7
> wave7.2 <- subset(gay, gay$study == 2 & gay$wave == 7)
> (mean(wave7.2$ssm[wave7.2$treatment == "Same-Sex Marriage Script by Gay Canvasser"])-mean(wave1.2$ssm[wave1.2$treatment == "Same-Sex Marriage Script by Gay Canvasser"]))-(mean(wave7.2$ssm[wave7.2$treatment == "No Contact"])-mean(wave1.2$ssm[wave1.2$treatment == "No Contact"]))
[1] 0.3054089
研究全体として、ゲイの訪問員が同性婚台本を用いる条件かであると、同性婚への支持が高まる効果がある。
イワマ
イワマ
練習問題2.8.3
1
> #1
> leaders <- read.csv("leaders.csv")
> dim(leaders)
[1] 250 11
> summary(leaders)#省略
> #暗殺計画回数を調べる
> nrow(leaders)
[1] 250
> #暗殺計画のあった国数を調べる
> length(unique(leaders$country))
[1] 88
> #年で平均何回の暗殺計画があったか
> nrow(leaders)/length(unique(leaders$year))
[1] 2.45098
250の暗殺計画が記録されている。
少なくとも1回は指導者暗殺が計画された国は88ヶ国ある。
年に平均して約2.45回暗殺計画がある
イワマ
2
> #2
> leaders$success <- NA
> leaders$success[leaders$result == "dies within a day after the attack"] <- 1
> leaders$success[leaders$result != "dies within a day after the attack"] <- 0
> mean(leaders$success)
[1] 0.184
指導者暗殺計画の全体的な成功率は18.4%である。
そのため暗殺の成功はランダムに決まるという仮定は妥当ではない。
イワマ
イワマ
3
> #3
> tapply(leaders$politybefore, leaders$success, mean)
0 1
-1.7892157 -0.3188406
> tapply(leaders$age, leaders$success, mean)
0 1
52.69118 57.21739
暗殺が成功した計画の平均ポリティ指標は約-0.31、失敗した計画の平均ポリティ指標は約-1.78で、暗殺に成功するほうが平均ポリティ指標が高い。
また、成功した暗殺計画の指導者の平均年齢は約52.69歳、失敗した時の指導者の平均年齢は約57.21歳で、暗殺に成功するほうが指導者の平均年齢は低い。
上記より、暗殺の成功はランダムに決まるという仮定は妥当ではないと言える。
イワマ
イワマ
4
> #4
> leaders$warbefore <- NA
> leaders$warbefore[leaders$interwarbefore == 1 | leaders$civilwarbefore == 1] <- 1
> leaders$warbefore[leaders$interwarbefore != 1 & leaders$civilwarbefore != 1] <- 0
> warYES <- subset(leaders, leaders$warbefore == 1)
> tapply(warYES$politybefore, warYES$success, mean)
0 1
-1.6973684 -0.1666667
> tapply(warYES$age, warYES$success, mean)
0 1
53.25 57.50
戦争経験があった中で、暗殺が成功した計画の平均ポリティ指標は約-1.69、失敗した計画の平均ポリティ指標は約-0.166で、暗殺に成功するほうが平均ポリティ指標が高い。しかし、成功と失敗の平均ポリティ指標の差は戦争経験があった方が小さい。平均ポリティ指標は戦争経験が関わっている可能性が高い。
また、成功した暗殺計画の指導者の平均年齢は約53.25歳、失敗した時の指導者の平均年齢は約57.50歳で、暗殺に成功するほうが指導者の平均年齢は低い。こちらは戦争経験があろうとなかろうと結果は大きく変わらなかった。
イワマ
5
> #5
> leaders$warafter <- NA
> leaders$warafter[leaders$interwarafter == 1 | leaders$civilwarafter == 1] <- 1
> leaders$warafter[leaders$interwarafter != 1 & leaders$civilwarafter != 1] <- 0
> tapply(leaders$warafter, leaders$success, mean)
0 1
0.2941176 0.1956522
> tapply(leaders$polityafter, leaders$success, mean)
0 1
-1.9493464 -0.3224638
暗殺が成功した計画した後の3年間で戦争が起きた確率は約29.41%、失敗した場合は約19.56%だった。
暗殺が成功した計画した後の3年間でのポリティ指標は約-1.94、失敗した場合は約-0.32だった。
よって、失敗に比べて、暗殺成功は民主化を後退させ、戦争を引き起こす可能性が高いと言える
イワマ
イワマ
イワマ
自分もこの本を使って勉強しているので、3章以降の解答もあげていただけると嬉しいです。1章、2章ありがとうございます
ありがとうございます🙇♂️ゆっくりですが更新していこうと思います。
自分も初学者に近いので間違え等ありましたらご指摘いただけると嬉しいです
2.8.3の4の解釈において、暗殺成功と失敗が逆になっているようです。
5の解釈も同じように逆になっていましたね。