15 実験的手法と効果検証

Published

2024/07/26

Modified

2024/07/31

0.1 準備

0.1.1 パッケージの読み込み

Code
options(digits = 3)
if (!require("pacman")) install.packages("pacman")
pacman::p_load(tidyverse, magrittr, ggpubr, here,
               car, modelsummary, datarium, dae, ggdist) 
2
必要なパッケージを読み込み

1 実験的手法とは?


調査者が何らかの操作をして行う調査・研究

1.1 例1:治験

参加者をランダムに2つ(以上)のグループに割り振って,片方には新しい薬を,片方には薬ではないもの(プラセボ)を投与して,新薬の効果を検証する

1.2 例2:肥料の実験

同じ場所に並べた複数の植木のうち,ランダムに選んだいくつかには肥料を与え,残りには与えないことで,肥料の効果を検証する

1.3 例3:ABテスト

アクセスしてくる人のうち一定割合に別のデザインの画面を表示し,クリックする先やクリック率等を比較する。(どちらのデザインの方が良いか?)

1.4 例4:従業員の業績評価方法

  • 企業の人事制度の違いが効果をもたらすのか明らかにするため,ランダムに選択された部署のみ業績評価の方法を変えてみる。評価の方法を変えなかった部署と行動の変化を比較する
  • 企業トップのメッセージが現場の従業員の行動に与える影響を見るため,ランダムに選ばれた店舗だけにトップのメッセージ動画を定期的に配信する。メッセージを受け取った店舗と受け取らなかった店舗の行動の違いを比較する (Cronin, Erkens, Schloetzer, and Tinsley 2021)

2 実験的手法の特徴と経営への応用

2.1 実験的手法の特徴

実験的手法は,調査者が何らかの介入をして,その介入効果を見るようなもの。そのような特徴から

  • 因果関係を検証できる
  • 実験で検証したい要因以外が調整されているので,堅い証拠が得られる(内的妥当性が高い)

元々理系では実験的手法が中心だったけれど,上記の特徴から社会科学領域でも実験的研究が重視されてきている。2019年のノーベル経済学賞をとったBanerjee, Duflo, Kremerも「世界の貧困を改善するための実験的アプローチに関する功績」

一方で,

  • 実験環境以外でも同じような結果が得られるかはわからない(外的妥当性が低い)
  • 実験で検証できる要因(≒調査者が操作できる要因)しか実験できない
    • 「職場における仲の良さが,仕事に対するモチベーションに与える影響」みたいなのは研究しづらい。
    • 「株式市場の値動き」みたいなのも研究しづらい

2.2 実験研究と因果推論

  • 実験研究と関連して,統計的手法を用いた因果関係の推論(統計的因果推論)が注目されつつある
    • 2021年のノーベル経済学賞をとったCard, Angrist, Imbensの受賞理由は「因果関係の分析への方法論的貢献」
  • 回帰分析は,yを結果,xを原因とみなした因果関係を検証しているように見える(し,多くの場合因果関係を暗に想定している)が,実際に算出しているのは相関関係
    • 逆因果の可能性も否定できない。
  • 実験的な調査方法と組み合わせることで,回帰分析の結果は因果関係と見なせる
    • 他の調査方法で因果関係を証明するためには,統計的に行動な技術が必要
      • 過激派は実験以外では因果関係は証明不可能と主張

3 因果関係

3.1 因果関係って?

xがyの原因となる

  • ある薬Aが,病気Zを直す

  • ある広告Bが,売上高Sを高くする

3.2 相関≠因果関係

3.2.1 単なる相関

「国民健康・栄養調査」による年齢別の身長・体重データ

Code
height_weight <- here("data", 
                      "12_height_weight.csv") |> read_csv()

height_weight |> 
  ggplot(aes(x = Weight_m, y = Height_m)) + 
  geom_point()

Code
lm(Height_m ~ Weight_m, 
   data = height_weight) |>  
  summary()

Call:
lm(formula = Height_m ~ Weight_m, data = height_weight)

Residuals:
   Min     1Q Median     3Q    Max 
-19.02  -6.79   1.33   6.58  12.11 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  84.7973     2.4348    34.8   <2e-16 ***
Weight_m      1.3391     0.0464    28.9   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 7.61 on 60 degrees of freedom
Multiple R-squared:  0.933, Adjusted R-squared:  0.932 
F-statistic:  834 on 1 and 60 DF,  p-value: <2e-16

身長と体重は有意に正の関係がある。

  • 体重が1kg重いと身長が1.34cm高い。

でも,これは明らかに因果関係ではない。

  • 体重が重くなるから身長が伸びるわけではない
  • 身長を伸ばしたかったら体重を重くすればいいわけではない

おそらく単なる相関関係


3.2.2 単なる偶然(擬似相関)

偶然相関があるように見える

人口あたりのチーズの消費量とベッドシーツに絡まって死ぬ人の数


アメリカの科学・宇宙・テクノロジーに対する支出と首吊り,絞殺,窒息による自殺者数


3.2.3 共通の要因がある(交絡)

つまり…

単に相関を計算したり,回帰分析をしただけではx → yという因果関係はわからない。

4 因果推論

因果関係を推論することは結構難しい。

4.1 個人レベルで考えると…

仮に薬の効果を知りたいとしたら,薬を投与した人と投与しない人1人ずつのその効果(例えば血液検査の結果数値など)を比べる?

適切な比較はできない

  • そもそもの病状が違うかもしれない
  • 体格や薬で治そうとしている病気以外の持病の状況が違うかもしれない

本来的には薬の効果(薬と症状改善の因果関係)は「同じ人が投与した場合と投与していない場合」を比較しないといけない。

でも,現実に観察されるのはどっちか。薬ありもしくは薬なしどっちかのデータしか取れない。

  • 投与した人の,仮に投与しなかった場合の結果は不明
  • 投与しなかった人の仮に投与した場合の結果は不明

パラレルワールド・タイムマシンがない限り実現できない。反実仮想が必要。

因果推論の根本問題とか言われる

4.2 集団レベルで見ると

たくさんの参加者を集めて,その人たちにランダムに処置(投与するかしないか)を割り振る

  • これによって個人個人の差は平均的に同じになる
    • 症状が重い人軽い人,その他持病がある人ない人,性別などは確率的に均一になることが期待される

ランダムに割り振った集団間の比較をすることで薬の「平均的な」効果を推定することができる

  • ATE (Average Treatment Effect)

4.3 つまり…

  • 個人レベルで見ると因果関係はそもそも検証が不可能

  • 集団レベルでランダムに処置を割り振ることで,平均的な効果の推定を通した因果関係が可能

このことを使って

  • たくさんのデータを使って統計的な分析をすることにより,因果関係を推定する事が可能かもしれない

4.4 経営での応用可能性

  • 経営学研究や経営の実務においても,何かしらの効果を検証したい場合には,実験的手法を思い浮かべると良さそう
    • 実験が可能ならば,実験を
    • 実験が不可能なら,実験に近い設定で検証するにはどんな工夫をすればよいか?

参考: エビデンスレベル
  • 根拠に基づく医療(Evidence Based Medicine: EBM)という考え方の中の言葉
  • 各研究方法から得られる証拠(エビデンス)をその信頼度で分類している
  • 根拠に基づく政策立案(EBPM)や,根拠に基づく経営(EBMgt) (Rousseau 2006) として,経営学を含む他分野でも紹介されつつある
エビデンスレベル一覧(Wikipediaから)
Level 内容
1a ランダム化比較試験メタアナリシス
1b 少なくとも一つのランダム化比較試験 (RCT)
2a ランダム割付を伴わない同時コントロールを伴うコホート研究(前向き研究、prospective study, concurrent cohort study)
2b ランダム割付を伴わない過去のコントロールを伴うコホート研究 (historical cohort study, retrospective cohort study)
3 症例対照研究(ケースコントロール、後ろ向き研究)
4 処置前後の比較の前後比較、対照群を伴わない研究
5 症例報告、ケースシリーズ
6 専門家個人の意見(専門家委員会報告を含む)

5 実験におけるデータ分析例

5.1 データ

Rにサンプルデータとして入っているheadacheデータを使用

ある製薬会社が片頭痛患者を対象に3種類の治療法を試験した。実験には72人の参加者が登録された。その目的は、片頭痛エピソードに関連する痛みのスコアを下げる新しいクラスの治療法の可能性を調べることである。

参加者は男性36名、女性36名である。男性と女性はさらに(等しく)片頭痛のリスクが低いか高いかに細分化された。

以下の変数を含む:

gender性別: 「男性」と「女性」;

riskリスク: 低 “と”高”

treatment治療の種類:3つのカテゴリーがある: X”、“Y”、“Z”の3つのカテゴリーがある。

Code
data("headache")
headache

Code
data("headache")
headache <- headache |> 
  filter(treatment != "Y")  |>  
  mutate(treatment = as.character(treatment),
         treatment = factor(treatment))
1
treatmentはもともとfactor型の変数。filterでYを落とすだけだと,サンプルサイズ0のYが残ってしまう。

分析例を簡単にするため,treatment Yを落とした。なので,Xを治療なし,Zを薬による治療と解釈して話を進める


5.2 記述統計量

記述統計を見ると,gender(男女)とrisk(高い低い)は各条件に均等に配分されている

  • 単純な比較でも有意な差がある
Code
datasummary_balance(pain_score + gender + risk ~ 
                    treatment,
                    dinm_statistic = "p.value",
                    data = headache)
X (N=24) Z (N=24)
Mean Std. Dev. Mean Std. Dev. Diff. in Means p
pain_score 80.5 8.6 76.2 5.9 -4.2 0.054
N Pct. N Pct.
gender male 12 50.0 12 50.0
female 12 50.0 12 50.0
risk high 12 50.0 12 50.0
low 12 50.0 12 50.0

Code
ggplot(data = headache, 
       aes(x = treatment, 
           y = pain_score)) +
  geom_boxplot()

5.3 分析方法(分散分析)

主な分析は分散分析(ANOVA)Anova(lm(結果 ~ 要因, data = データ名))コマンドで実行可能

(僕は二重括弧が嫌いなので以下のように分けます)

Code
a <- lm(pain_score ~ treatment, 
        data = headache) |>
  Anova() 
a

仮説検定での帰無仮説は治療の効果はない。治療の違いの効果は10%水準で有意(\(F_{1,46}\) =3.946, p = 0.053 ; 水準を10%としたら,関係ないと言う帰無仮説は棄却される)


ANOVAの原理はダミー変数を使った回帰分析と一緒。なので以下のような単回帰分析をしても同じ

Code
lm(pain_score ~ treatment, 
   data = headache) |> 
  summary()

Call:
lm(formula = pain_score ~ treatment, data = headache)

Residuals:
   Min     1Q Median     3Q    Max 
-12.09  -5.62  -1.17   4.40  19.55 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)    80.45       1.50   53.62   <2e-16 ***
treatmentZ     -4.22       2.12   -1.99    0.053 .  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 7.35 on 46 degrees of freedom
Multiple R-squared:  0.079, Adjusted R-squared:  0.059 
F-statistic: 3.95 on 1 and 46 DF,  p-value: 0.053

更に,性別やそもそもの頭痛リスクを踏まえた分析をしてみる

5.3.1 リスクを含めた分析

Code
a <- lm(pain_score ~ treatment * risk, 
        data = headache) |> 
  Anova()
a
  • 治療の効果は5%水準で有意に\(F_{1,44}\) =6.741, p = 0.013 )
  • リスクも有意。リスクが高い人は頭痛度合いが強い\(F_{1,44}\) =34.019, p = 5.944^{-7} )
  • 効果は似た感じ(交互作用はない)\(F_{1,44}\) =0.573, p = 0.453 )

また,ggline()コマンドを使うと,効果を図に表せる

Code
ggline(data = headache,
       x = "treatment", 
       y = "pain_score",
       color = "risk", 
       add = c("mean")) +
  theme_minimal() + 
  theme(panel.grid = element_blank()) 


5.3.2 性別を含めた分析

男女で効き目が違うか

Code
a <- lm(pain_score ~ treatment * gender, 
        data = headache) |>  
  Anova()
a

男性の方が効果が大きい。ただし交互作用が有意とまではいかない\(F_{1,44}\) =2.439, p = 0.126 )


Code
ggline(data = headache,
       x = "treatment",
       y = "pain_score",
       color = "gender",
       add = c("mean")) +
  theme_minimal() + 
  theme(panel.grid = element_blank()) 


5.3.3 3要因を含んだ分析

Code
lm(pain_score ~ treatment + risk + gender, 
   data = headache) |>  
  Anova()

treatment, gender, riskはそれぞれ頭痛の度合いと有意に関係


Code
lm(pain_score ~ treatment * risk * gender, 
   data = headache) |> 
  Anova()

treatmentriskgenderの3要因に交互作用

  • これがどう言う意味かというと…次のページの図から,「男性で,尚且つリスクが高い人」にとって,治療Zは効果がある

Code
int <- interaction.ABC.plot(data = headache,
                     response = pain_score,
                     x.factor = treatment,
                     groups.factor = gender, 
                     trace.factor = risk) 
1
3要素の図表はinteraction.ABC.plot (daeパッケージ)を使うと比較的簡単にかける

Code
int + theme_minimal()


回帰分析の結果を並べるとこんな感じ

Code
list(
  m1 <- lm(pain_score ~ treatment , 
           data = headache),
  m2 <- lm(pain_score ~ treatment + gender, 
           data = headache),
  m3 <- lm(pain_score ~ treatment * gender, 
           data = headache),
  m4 <- lm(pain_score ~ treatment + risk, 
           data = headache),
  m5 <- lm(pain_score ~ treatment * risk, 
           data = headache),
  m6 <- lm(pain_score ~ treatment + gender + risk, 
           data = headache),
  m7 <- lm(pain_score ~ treatment * gender * risk, 
           data = headache)
  ) |> 
  msummary(models = _,
           stars = TRUE,
           gof_omit = "Log.Lik.|AIC|BIC|RMSE|F",
           statistic = NULL)
(1) (2) (3) (4) (5) (6) (7)
+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001
(Intercept) 80.453*** 82.839*** 84.395*** 85.188*** 85.802*** 87.574*** 92.739***
treatmentZ -4.215+ -4.215* -7.327* -4.215* -5.444* -4.215** -13.058***
genderfemale -4.773* -7.885** -4.773** -13.874***
treatmentZ × genderfemale 6.224 15.228***
risklow -9.469*** -10.698*** -9.469*** -16.687***
treatmentZ × risklow 2.458 11.462**
genderfemale × risklow 11.978**
treatmentZ × genderfemale × risklow -18.009***
Num.Obs. 48 48 48 48 48 48 48
R2 0.079 0.180 0.223 0.478 0.484 0.579 0.729
R2 Adj. 0.059 0.144 0.170 0.454 0.449 0.550 0.681

6 まとめ


  • 実験研究の特徴と具体的な分散方法について扱いました。
  • 実験は,厳密な因果関係の推論ができる反面,社会調査において実験できる機会や状況は限られている
  • 実験では主に分散分析が使われるけれど,本質は回帰分析と同じ

7 課題

ハンバーガー統計学を参考に作成


  • ある企業では,店舗の業績測定・フィードバック方法が複雑すぎると考えています。そこで,現在の業績指標フォーマットの情報を厳選し,シンプルなフォーマットを作成しました。
    • シンプルになったので,各店舗の店長は情報をより上手く読み取り,店舗管理に利用できると考えられます。
    • 一方で,情報量自体は減っているので,必ずしも店舗管理にプラスの影響を与えるとは限らないという意見もあります。
  • この効果を調べるために,店舗(店長)をランダムに2グループに分け,ある店舗では従来のフォーマットを,別の店舗では新しいフォーマットを使うようにしてもらいました。
    • 店舗業績のうち,特に店長の判断が影響しそうな部分を取り出し,エリアマネージャーたちに店長の意思決定の巧拙を10段階で評価してもらいました。
  • 店長の会計知識について事前にテストをしていたため,そのデータを合わせて利用します。
    • 中央値で分けて「会計知識高」と「会計知識低」としました。
統制群 新フォーマット群
会計知識高 7, 8, 6, 8, 10, 7, 8, 8, 9, 7 8, 9, 10, 10, 8, 8, 9, 7, 10, 8
会計知識低 4, 6, 5, 4, 3, 7, 5, 6, 4, 5 8, 7, 8, 6, 9, 7, 8, 8, 10, 8

(1) この検定での帰無仮説を言いなさい。

(2) この検定での対立仮説を言いなさい。

(3) 4つの条件におけるそれぞれの平均と標準偏差を計算しなさい(コードと結果)。

(4) 分散分析を行いなさい(コード)。

(5) 有意水準を1%としたとき、この分散分析表から言えることを書きなさい。

(6) 以上の検定の結果を、わかりやすいことばで説明しなさい。

次ページにデータ作成用コマンドがあります。


データ作成

Code
score <- c(7, 8, 6, 8, 10, 7, 8, 8, 9, 7,
           8, 9, 10, 10, 8, 8, 9, 7, 10, 8,
           4, 6, 5, 4, 3, 7, 5, 6, 4, 5,
           8, 7, 8, 6, 9, 7, 8, 8, 10, 8)
knowledge <- c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
          1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
          0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
format <-c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
          0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
kadai <- tibble(score, knowledge, format) %>%
  mutate(knowledge = factor(knowledge, 
                       levels = c(1, 0), 
                       labels = c("high", "low")),
         format = factor(format, 
                         levels = c(1, 0), 
                         labels = c("new", "normal")))

7.1 うりぼーネットで 授業振り返りアンケートに回答してください!

8 参考文献

References

Cronin, M., D. H. Erkens, J. D. Schloetzer, and C. H. Tinsley. 2021. How Controlling Failure Perceptions Affects Performance: Evidence from a Field Experiment. The Accounting Review 96 (2): 205–230.
Rousseau, D. M. 2006. Is there Such a thing as Evidence-Based Management? Academy of Management Review 31 (2): 256–269.