0

我有很长的一组频率(超过 70 行是位置)与智利沿岸不同螃蟹种群的性别比有关。这种性别比例从北到南从 1:1 变化的臀部变化,所以我有两列频率,我想确定从哪里开始变化。所以为了做到这一点,我有一个适合度测试。我的想法是在数据框上放置一些预期的概率,这样我就可以对存在显着差异的行进行子集化,并在这些人群中进行一些测试。

##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)

我想计算 Chi.Square 和 p.value (df=1) 将这些信息添加到新列中,因为每行都有 4 个元素来执行 2x2 列联表。

我试图按每一行来做,但我对如何将每个值分配给列联表感到困惑。

4

1 回答 1

0

不确定您是否想要以下内容(在文森特评论后编辑):

##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 回答