table 和 chisq.test() 在 R 中的适当比例

Proper proportion table and chisq.test() in R

我对 R(Mac 上的版本 1.1.383)还是很陌生,如果这个问题很基础,我深表歉意。我已经在互联网上和此页面上搜索了解决方案,但找不到任何解决方案。

我想做的是做一个比例table,在这个比例上我可以用chisq.test()来检验4个病人组之间在5个病人的比例分布上是否有差异不同的条件。

我的数据包含患有疾病(CHF、DM、S、MI 和 CHF)的患者百分比和患者组(绿色、黄色、橙色和红色)。 4组分别有238例、196例、158例和20例患者,部分患者可能有不止一种情况。因此,我使用的是比例而不是实际患者人数。

像这样:

condition <- c("CHF", "DM", "S", "MI", "CHF")
green <- c(30,33,35,17,15)/238*100
yellow <- c(47,32,25,21,19)/196*100
orange <- c(48,24,27,27,25)/158*100
red <- c(10,2,4,1,6)/20*100

其中四组中分别有 30、47、48 和 10 名患者患有 CHF。 33, 32, 24 和 2 位患者患有 DM 等等...

使用 cbind() 我得到这个矩阵:

df <- cbind(condition, green, yellow, orange, red )
df
condition     green   yellow   orange   red    #I only included 1 decimal. 
[1,] "CHF"    "12.6"  "24.9"   "30.4"   "50"
[2,] "DM"     "13.9"  "16.3"   "15.2"   "10"
[3,] "S"      "14.7"  "12.8"   "17.1"   "20"
[4,] "MI"     "7.1"   "10.7"   "17.1"   "5" 
[5,] "CHF"    "6.3"   "9.7"    "15.8"   "30"

它几乎看起来像我想要的,但是“”让我怀疑它被编码为字符而不是适当的比例 table。当我使用 chisq.test() 时也会发生这种情况:

chisq.test(df)
Error in sum(x) : invalid 'type' (character) of argument 

我真的希望你能帮上忙。如何合理比例table并检验四组条件分布的差异?

我们用 cbind 创建了一个矩阵,矩阵只能有一个 class。将 'condition' 作为列将数字列更改为 character,这会在 chisq.test.

中产生问题

根据?chisq.test,输入参数'x'可以是vectormatrix,但允许的class是numericfactor.

x - a numeric vector or matrix. x and y can also both be factors.

因此,创建仅包含 numeric 个向量的 matrix,并将 'condition' 保留为行名称。

df <- cbind(green, yellow, orange, red)
row.names(df) <- condition
chisq.test(df)