dplyrで因子水準ごとに二項検定

元データ: qba_all:

y MOYORIEKI
0 大津駅
1 山科関
0 石山駅
1 大津駅
0 彦根駅
0 南草津駅
1 彦根駅

計算

qba<-qb_all
#因子の順番を駅の順番を揃える
#stalist<-c("山科駅","大津駅","膳所駅","石山駅","瀬田駅","南草津駅","草津駅","栗東駅","守山駅","野洲駅","篠原駅","近江八幡駅","安土駅","能登川駅","稲枝駅","河瀬駅","南彦根駅","彦根駅")
#v<-sample(1:length(qba[,1]),as.integer(0.6*length(qba[,1])),replace=F)
#v2<-setdiff(1:length(qb[,1]),v)
#qb_learn<-qb_all[v,]
#qb_test<-qbb
#qb_learn$MOYORIEKI<-factor(qb_learn$MOYORIEKI,levels=stalist)
#qb_test$MOYORIEKI<-factor(qb_test$MOYORIEKI,levels=stalist)

#変数yの平均をとる
t0<-dplyr::summarize(qb_learn,mean=mean(y))
#output
#   y
#1 0.6655981

#二項検定 (1)最寄り駅でグループ分けして、(2)駅ごとにy0=当選1の数,y1=否当選0の数を数える  (3)行との処理に(4)y0とy1を元にp=0.66559について二項検定と確率を計算し表示
> t1<-dplyr::group_by(qb_learn,MOYORIEKI)%>% dplyr::summarize(y0=length(y[y==0]),y1=length(y[y==1])) %>% dplyr::rowwise() %>% dplyr::mutate(p_value=binom.test(c(y0,y1),p=1-0.665598)$p.value,prob=y1/(y0+y1))
#output t1
#Source: local data frame 
#Groups: <by row>
#
#  TIKUNENSUU MOYORIEKI    y0    y1    p_value      prob
#        <dbl>    <fctr> <int> <int>      <dbl>     <dbl>
#1           0    山科駅    50    93 0.72312669 0.6503497
#2           0    大津駅     8    25 0.35608776 0.7575758
#3           0    膳所駅     5     7 0.55063179 0.5833333
#4           0    石山駅    34    66 0.91577401 0.6600000


計算結果を元のテーブルに追加 join文を使えば簡単(2016.12.12)。

dplyr::left_join(qb_learn,t1,by="MOYORIEKI")