0

私は、チリの海岸線にあるカニのさまざまな個体群の性比に関連する一連の長い頻度(場所である70行以上)を持っています。この性比が北から南に1:1で変化するという仮説があるため、変化を開始する場所を特定したい2列の周波数があります。それを行うために、適合度テストがあります。私の考えは、データフレームにいくつかの予想される確率を配置することです。これにより、有意差がある行をサブセット化し、それらの母集団でテストを実行できます。

##Creating some fake data
female<-c(54,34,76,98,65)
male<-c(50,39,85,86,75)
female_exp<-c(0.5,0.5,0.5,0.5,0.5)
male_exp<-c(0.5,0.5,0.5,0.5,0.5)

#The table as Data Frame object
table<-data.frame(female, male, female_exp, male_exp)

各行に2x2コンテンジェンシーテーブルを実行するための4つの要素があることを考慮して、これらの情報を新しい列に追加するChi.Squareとp.value(df = 1)を計算したいと思います。

行ごとに作成しようとしましたが、分割表に各値を割り当てる方法について混乱しました。

4

1 に答える 1

0

次のものが必要かどうかわかりません(Vincentのコメントに従って編集):

##Creating some fake data
female <- c(54,34,76,98,65,20)
male<-c(50,39,85,86,75,80)
female_exp<-c(0.5,0.5,0.5,0.5,0.5,0.5)
male_exp<-c(0.5,0.5,0.5,0.5,0.5,0.5) 

#The table as Data Frame object
table<-data.frame(female, male, female_exp, male_exp)

get_chisq <- function(x, prbs) {
             chsq <- chisq.test(x=x, p=prbs)
             ans <- cbind(statistic=chsq$statistic[[1]],
                          df=chsq$parameter[[1]],
                          p.value=chsq$p.value)
             ans
}

sol<-data.frame(t(apply(table, 1, function(x) get_chisq(x[1:2], x[3:4]))))
names(sol)<-c("statistic","df","p.value")
sol$hypothesis<-ifelse(sol$p.value<0.5, TRUE, FALSE) # tells you when your hypothesis is true

お役に立てれば。

于 2012-03-02T22:39:09.450 に答える