【问题标题】:how to perform prop.test (comparing two groups) row-wise on a large data set如何在大型数据集上逐行执行 prop.test(比较两组)
【发布时间】:2014-10-05 04:24:34
【问题描述】:

由于我无法根据我的特殊问题调整已针对该主题给出的答案:

我有一个数据集:

数据.csv:

col1 col2 col3 col4

8600 64 1e+06 1e+06

9000 8999 1e+06 1e+06

... ... ... ...

我导入数据并运行 prop.test 以检查 col1 和 col2 中的值之间的显着差异(n1 和 n2 是样本大小的总数)。

data <- read.csv("data.csv", sep="\t", header=TRUE, dec = ",") 
x1 <- data$col1
x2 <- data$col2
n1 <- data$col3
n2 <- data$col4

pval <- prop.test(c(x1,x2),c(n1,n2))
pval$p.value

没有给我所有行的 p.value:

summary(pval)

给予:

   Length Class  Mode     
statistic     1    -none- numeric  
parameter     1    -none- numeric  
p.value       1    -none- numeric  
estimate    200    -none- numeric  
null.value    0    -none- NULL     
conf.int      0    -none- NULL     
alternative   1    -none- character
method        1    -none- character
data.name     1    -none- character

如果我按行执行,它似乎适用于该行

pval2 <- prop.test(c(x1[1],x2[1]),c(n1[1],n2[1]))

pval2$p.value
summary(pval2)

给予:

Length Class  Mode     
statistic   1      -none- numeric  
parameter   1      -none- numeric  
p.value     1      -none- numeric  
estimate    2      -none- numeric  
null.value  0      -none- NULL     
conf.int    2      -none- numeric  
alternative 1      -none- character
method      1      -none- character
data.name   1      -none- character

显然我不想手动为所有 100 行执行此操作。 有什么建议如何明智地进行 prop.test 行并获得 p.value?

【问题讨论】:

    标签: r


    【解决方案1】:

    由于 prop.test 采用各种形式的输入,而我对它不是很熟悉,所以我无法确定您要使用哪一种,因此我不会评估您是否正确使用了 stat。但是,我会告诉你 2 种方法来避免手动对每一行进行测试。

    我使用和思考数据表,如果这让您感到困惑,请原谅。 恐怕下面的代码没有经过测试。我的 R 会话很忙。

    require(data.table) 
    ##read the data into a data table.   
    data <- data.table(read.csv("data.csv", sep="\t", header=TRUE, dec = ","))
    ## add an id, identifying each row.
    data[,id:=seq(1:(.N))]
    ## do prop.test for each row.
    data[,prop.test(c(col1,col2),c(col3,col4)),by="id"]
    

    如果不适合你,你可以试试 lapply。

    a <- c(1:nrow(data))
    myrowprop <- function(i) {
        prop.test(c(x1[i],x2[i]),c(n1[i],n2[i]))
    }
    ListofResults <- lapply(a,myrowprop)
    

    【讨论】:

    • 第一个变体引发错误。第二个工作得很好。与上述相同的问题(AEBilgrau 的答案):如何仅隔离 p.values?
    【解决方案2】:

    通过修改您的成功尝试,以下应该可以工作:

    ans <- lapply(seq_along(x1), function(i) prop.test(c(x1[i],x2[i]),c(n1[i],n2[i])))
    

    【讨论】:

    • 此变体有效。但是我如何隔离每个 p.value。
    猜你喜欢
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    • 2019-08-13
    • 2013-12-25
    • 1970-01-01
    相关资源
    最近更新 更多