【问题标题】:How to perform Two-proportion Z test on items in a row of a dataframe and append the p value to the dataframe?如何对数据框的一行中的项目执行二比例 Z 检验并将 p 值附加到数据框?
【发布时间】:2020-07-21 00:04:30
【问题描述】:

我正在使用 R,并且在数据框中有数据。

数据框的每一行都有基于城市/农村的数据,以及用于比较城市和农村人口比率的二比例 Z 检验。

df

State     UrbanPop     RuralPop     UrbanCases   RuralCases
AL         1000         250          200          50
AK         500          50           500          75

我们的想法是从 A 行和 B 行的数据中独立地进行二比例 Z 检验,以比较每个州内的城市/农村。

我试过的是

df$P_Values <- apply(df,1,function(x) prop.test(x = c(df$UrbanPop, df$UrbanCases), n = c(df$RuralPop, df$RuralCases))$p.value)

我收到一条警告,每行的“卡方近似值可能不正确”,并且附加到数据帧的所有 p 值都等于零。

任何帮助将不胜感激。

谢谢。

【问题讨论】:

    标签: r dataframe chi-squared


    【解决方案1】:

    你得到了 xn 错误:x 是“成功计数的向量”;这将匹配您的*Cases,而n 是试验次数;这将对应于您的*Pop。如果您为xn 重新分配向量,则代码有效:

    df$P_Values <- apply(df, 1, function(x) prop.test(n = c(df$UrbanPop, df$UrbanCases), 
                                                      x = c(df$RuralPop, df$RuralCases))$p.value)
    
    df
      UrbanPop RuralPop UrbanCases RuralCases             P_Values
    1     1000      250        200         50 0.000000000001119084
    2      500       50        500         75 0.000000000001119084
    

    【讨论】:

    • 不幸的是,p 值都是一样的。它是通过添加列来计算的吗?
    • 在阅读了 prop.test 之后,您似乎需要将案例与人口总数进行比较。所以你可以先计算人口总数(农村+城市):df$TotalPop &lt;- df$UrbanPop + df$RuralPop。这个总数代表n
    猜你喜欢
    • 2023-01-10
    • 2021-06-07
    • 2019-06-29
    • 1970-01-01
    • 2019-10-20
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    相关资源
    最近更新 更多