カイ二乗検定後の残差分析
2017.12.5更新
残差=実測値-期待値
標準化残差=
標準化残差の分散=
標準化残差は、近似的に 正規分布N(0 , 標準化残差の分散) に従う
#各質問に関するyesの回答者数の割合について有意水準5%で検定します. xxx <- c(20,10,2,5,410,350,200,120) xxx <- matrix(xxx,4,2) yes no Q1 20 410 Q2 10 350 Q3 2 200 Q4 5 120 rname <- c("Q1","Q2","Q3","Q4") #行名 cname <- c("yes","no") #列名 rownames(xxx)<-paste(rname) #行名のペースト colnames(xxx)<-paste(cname) #列名ののペースト #周辺和 addmargins(xxx) yes no Sum Q1 20 410 430 Q2 10 350 360 Q3 2 200 202 Q4 5 120 125 Sum 37 1080 1117 #期待値 xe <- chisq.test(xxx)$expected yes no Q1 14.243509 415.7565 Q2 11.924799 348.0752 Q3 6.691137 195.3089 Q4 4.140555 120.8594 #残差=実測値-期待値 re <- xxx-xe yes no Q1 5.7564906 -5.7564906 Q2 -1.9247986 1.9247986 Q3 -4.6911370 4.6911370 Q4 0.8594449 -0.8594449 #調整済残差 asr <- re/sqrt(xe*outer(1-rowSums(xxx)/sum(xxx), 1-colSums(xxx)/sum(xxx))) 1-rowSums(xxx)/sum(xxx) Q1 Q2 Q3 Q4 0.6150403 0.6777081 0.8191585 0.8880931 1-colSums(xxx)/sum(xxx) yes no 0.96687556 0.03312444 outer(1-rowSums(xxx)/sum(xxx), 1-colSums(xxx)/sum(xxx)) yes no Q1 0.5946674 0.02037287 Q2 0.6552594 0.02244870 Q3 0.7920243 0.02713417 Q4 0.8586755 0.02941759 asr #調整済(標準化)残差 yes no Q1 1.9779359 -1.9779359 Q2 -0.6885780 0.6885780 Q3 -2.0377875 2.0377875 Q4 0.4557999 -0.4557999 #累積分布 pnorm(asr,lower.tail=TRUE ) yes no Q1 0.97603203 0.02396797 Q2 0.24554445 0.75445555 Q3 0.02078559 0.97921441 Q4 0.67573307 0.32426693
Q1にyesと回答した人の割合は、他の質問項目に比べて有意に大きく、Q3にyesと回答した人の割合は、他の質問項目に比べて有意に小さいことがわかりました.
# r-de-r様からアドバイスいただきました # 調整済み残差を直接算出するRの関数です xxx <- c(20,10,2,5,410,350,200,120) xxx <- matrix(xxx,4,2) cht<-chisq.test(xxx) cht$stdres [,1] [,2] [1,] 1.9779359 -1.9779359 [2,] -0.6885780 0.6885780 [3,] -2.0377875 2.0377875 [4,] 0.4557999 -0.4557999