我完全是R的初学者。
我使用以下代码对R中的一列数据进行了多次卡方测试:
apply(mydata, 2, chisq.test, p=expected.probability)得到了这样的多重结果:
$
Primary Tumor
给定概率的x-平方检验
资料: newX,i x-平方= 515108,df = 6,p值< 2.2e-16。
$Primary Tumor_1
给定概率的x-平方检验
资料: newX,i x-平方= 583205,df = 6,p值< 2.2e-16。
$Primary Tumor_2
给定概率的x-平方检验
资料: newX,i x-平方= 58089,df = 6,p值< 2.2e-16。
可以提取出一个包含肿瘤数目,x-平方结果,df和p值50个样本的结果表吗?
我可以复制和粘贴在excel,但我想学习更大的例子代码。
谢谢您:)
发布于 2020-02-25 23:32:06
您可以看到chisq测试的名称:
names(chisq.test(matrix(1:4,ncol=2)))
[1] "statistic" "parameter" "p.value" "method" "data.name" "observed"
[7] "expected" "residuals" "stdres" 您需要的值是统计值(chisq)、参数(df)、p.value。
因此,我们模拟数据:
mydata = matrix(rpois(100,50),ncol=10)
colnames(mydata) = paste0("tumor",1:10)并编写了一个更详细的函数,以便在测试后取出这些参数。
res = apply(mydata,2,function(x){
chisq.test(x,p=rep(0.1,10))[c("statistic","parameter","p.value")]
})我们把它变成一个data.frame:
df = data.frame(id=names(res),do.call(rbind,res))
df
id statistic parameter p.value
tumor1 tumor1 4.322896 9 0.8889048
tumor2 tumor2 5.285714 9 0.8087245
tumor3 tumor3 2.803063 9 0.9715936
tumor4 tumor4 8.62578 9 0.4725097
tumor5 tumor5 13.22846 9 0.1525381
tumor6 tumor6 8.653768 9 0.4698283
tumor7 tumor7 7.666667 9 0.5680554
tumor8 tumor8 5.919132 9 0.7479838
tumor9 tumor9 8.051335 9 0.5289813
tumor10 tumor10 13.46875 9 0.1425173发布于 2020-02-25 19:22:14
尝尝这个
df <- apply(mydata, 2, chisq.test, p=expected.probability)只需将其分配给一个可以从您的环境访问的变量..。也看看这个问题吧--它也可能对你有帮助。chi square test for each row in data frame
https://stackoverflow.com/questions/60401438
复制相似问题