Hatena::ブログ(Diary)

arupaka-_-arupakaの日記

2016-07-22

Rで2つのカテゴリカルデータ(質的データ)の比較

Rで2つのカテゴリカルデータ(質的データ)の比較

カイ2乗検定の例

> v1<-table((qba$PET)[qba$y==0])

> v2<-table((qba$PET)[qba$y==1])

> chisq.test(cbind(v1,v2))

Pearson's Chi-squared test

data: cbind(v1, v2)

X-squared = 18.232, df = 2, p-value = 0.0001099

> v2<-table((qbb$PET)[qbb$y==1])

> v1<-table((qbb$PET)[qbb$y==0])

> chisq.test(cbind(v1,v2))

Pearson's Chi-squared test

data: cbind(v1, v2)

X-squared = 5.8369, df = 2, p-value = 0.05402

2016-07-17

Rでコンボリューション(畳み込み)

基本は、convolve関数。線形畳み込み(普通の畳み込み)にするためには、type="o"とする。

デフォルトは循環畳み込み.

q1<-dpois(0:100,lambda=1)

q2<-dpois(0:100,lambda=1)

q3<-convolve(q2, rev(q1),type="open")

たくさん畳み込みをするときは、fft関数を利用.

0をデータの後ろにたくさん作ると循環畳み込みが線形畳み込みと同値となる。

##DFT test

q1<-dpois(0:300,lambda=1)

q1b<-c(q1,rep(0,2*length(q1)))

f=fft(fft(q1b)^365,inv=TRUE)

q3b<-Re(f)/length(f)

plot(q3b)

curve(dnorm(x,mean=365,sd=365^0.5),add=T)

線形および循環たたみこみ

http://jp.mathworks.com/help/signal/ug/linear-and-circular-convolution.html?requestedDomain=jp.mathworks.com

高速畳み込み

http://www.is.titech.ac.jp/~mase/mase/html.jp/temp/convolve.jp.html

2016-07-15

Rで偏相関

Rで偏相関

library("psych")

qb_learn<-qba

qb_test<-qbb

qb_learn<-qb_learn %>% dplyr::select(y,TIKUNENSUU,TINRYOU)

qb_test<-qb_test %>% dplyr::select(y,TIKUNENSUU,TINRYOU)

> cor(qb_learn$TINRYOU,qb_learn$y)

[1] 0.1614954

> cor(qb_learn$TINRYOU,qb_learn$TIKUNENSUU)

[1] -0.3352435

> cor(qb_learn$TIKUNENSUU,qb_learn$y)

[1] -0.2804512

> partial.r(qb_learn,c(1,2),3)

partial correlations

y TIKUNENSUU

y 1.00 -0.24

TIKUNENSUU -0.24 1.00

> partial.r(qb_learn,c(1,3),2)

partial correlations

y TINRYOU

y 1.00 0.07

TINRYOU 0.07 1.00

> partial.r(qb_learn,c(2,3),1)

partial correlations

TIKUNENSUU TINRYOU

TIKUNENSUU 1.00 -0.31

TINRYOU -0.31 1.00

> partial.r(qb_learn)

2016-07-07

Rの因子を任意の順番に並び替える

元データ: qba_all:

y MOYORIEKI

0 大津駅

1 山科

0 石山駅

1 大津駅

0 彦根駅

0 南草津駅

1 彦根駅

計算: 因子の順番を駅の順番を揃える

stalist<-c("山科駅","大津駅","膳所駅","石山駅","瀬田駅","南草津駅","草津駅","栗東駅","守山駅","野洲駅","篠原駅","近江八幡駅","安土駅","能登川駅","稲枝駅","河瀬駅","南彦根駅","彦根駅")
qb_learn<-qb_all
qb_learn$MOYORIEKI<-factor(qb_learn$MOYORIEKI,levels=stalist)

2016-07-05

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