- 追加された行はこの色です。
- 削除された行はこの色です。
[[Rの備忘録]]
多重ロジットモデルの解釈について。[[R_対数線形モデル]]も参考にしてください。
日本人被験者と,韓国人被験者に同じアンケートを実施し,その回答選択肢である反応(A,B,C,D,E,F)の違いを,性別(男女),国籍(日韓),架空の質問相手(少年,中年)の三つを説明変数として分析する.
# 多重ロジットモデルを適用する
library(nnet)
# これは,Q(反応,A〜F)を性別(SEX),質問相手(Boy,Senior),国籍(NAT)に,さらに交互作用をすべて入れて説明しようとするモデル.
# 下の式は,反応(Q)を性別(SEX),相手(Boy,Senior),国籍(NAT)に,さらに交互作用をすべて入れて説明しようとするモデル.
dat.m <- multinom(Q ~ SEX * BS * NAT, data = dat)
dat.m2 <- step(dat.m )
# 結果を見る
summary( dat.m2)
Call:
multinom(formula = Q ~ SEX + NAT, data = dat)
# 性別と国籍が,それぞれ別々に効果あると出る.二つに交互作用はない.
coef(dat.m2) # 特に係数部分を確認
## (Intercept) SEX2 NATK
## B 3.446150 -0.495100658 -3.121002
## C -1.422745 -0.172240284 1.319633
## D 3.002553 0.007826699 -3.894165
## E 1.040829 -0.498292340 -12.054348
## F -7.508327 -1.267368205 6.150192
## この数値は対数オッズ比といわれる指標です.
## 下で説明しますが,最初の2行
## この数値は対数オッズ比といわれる指標です.下で説明しますが,最初の2行
## (Intercept) SEX2 NATK
## B 3.446150 -0.495100658 -3.121002
## というのは,基準を A,男性(1?),日本人
## として,この場合に,ABCDEFを選択する確率を
## 次のように求めることができます
## は,基準を A,男性(SEX1),日本人(NATJ) とし,以下は,この基準からの差であることを表しています.この2行ならば,Aに対するB反応の差を意味しています.
## 解析結果を使って,男性(SEX1),日本人(NATJ)が A,B,C,D,E,Fを選択する確率を次のように求めることができます
(x <- predict(dat.m2, data.frame(SEX = "1", BS = "S", NAT= "J"),
type = "probs"))
(x <- predict(dat.m2, data.frame(SEX = "1", BS = "S",
NAT= "J"), type = "probs"))
## A B C D
## 1.798904e-02 5.644843e-01 4.336283e-03 3.622434e-01
## E F
5.093713e-02 9.866955e-06
## e-02というのは,小数点を二つ前にずらすと言うことです.
## E F
## 5.093713e-02 9.866955e-06
## e-02というのは,小数点を二つ前にずらすと言うことです.
## これは
exp ( c(0, coef(dat.m2)[,1])) / sum ( exp ( c(0, coef(dat.m2)[,1]) ))
exp ( c(0, coef(dat.m2)[,1])) /
sum ( exp ( c(0, coef(dat.m2)[,1]) ))
# でも求まります.
# この基準に対して,男性(1?),の韓国人が選択する確率は
(y <- predict(dat.m2, data.frame(SEX = "1", BS = "S", NAT= "K"),
type = "probs"))
# この基準に対して,男性(SEX1),の韓国人(NATK)が選択する確率は
(y <- predict(dat.m2, data.frame(SEX = "1", BS = "S",
NAT= "K"), type = "probs"))
## A B C D
## 2.529461e-01 3.501368e-01 2.281639e-01 1.037065e-01
## E F
## 4.167902e-06 6.504252e-02
# となり,引き算すると
y - x
## A B C D
## 0.23495703 -0.21434745 0.22382762 -0.25853689
## E F
-0.05093297 0.06503266
## -0.05093297 0.06503266
# 韓国人男性の場合 B D E を選択する確率が日本人男性より減ります.
# これは以下の出力で,NATK 列の B D E 行の係数がマイナスであることによります
# 韓国人男性の場合 B D E を選択する確率が日本人男性より減ります.これは以下の出力で,NATK 列の B D E 行の係数がマイナスであることによります
coef( dat.m2 )
## (Intercept) SEX2 NATK
## B 3.446150 -0.495100658 -3.121002
## C -1.422745 -0.172240284 1.319633
## D 3.002553 0.007826699 -3.894165
## E 1.040829 -0.498292340 -12.054348
## F -7.508327 -1.267368205 6.150192
# この -3.121002 がどうやって計算されるかは,
# まず韓国と日本(そして男)の場合をまとめて計算して
# この -3.121002 がどうやって計算されるかは,まず韓国と日本(そして男)の場合をまとめて計算して
(x2 <- predict(dat.m2, data.frame(SEX = "1", BS = "S",
NAT= c("J","K")), type = "probs"))
# オッズを求めます.オッズとは医学などで使われるものです.
# 対数オッズ比を求めます.オッズ比とは医学などで使われるもので,病気にかかる割合を,かからない割合でわった数値をオッズ比といいます.
log(x2[1,1] * x2[2,2] / (x2[1,2] * x2[2,1] ) )
# この意味は,日本人で A を選択する確率に 韓国人で B を選択する確率をかけ,これを日本人で B を選択する確率と韓国人でAを選択する確率を乗じたものを求め,この結果の対数をとったものです.
# この意味は,(日本人で A を選択する確率に 韓国人で B を選択する確率をかけ),これを,(日本人で B を選択する確率と韓国人でAを選択する確率を乗じたもの) で割ることです.この結果の対数をとります.