正确的比例表和R中的chisq.test()

时间:2018-11-23 17:22:30

标签: r rstudio chi-squared

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

我想做的是制作一个比例表,我可以在该表上使用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"

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

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

我真的希望您能提供帮助。如何制作适当的比例表并检验四组中条件分布的差异?

1 个答案:

答案 0 :(得分:2)

我们用cbind创建了一个矩阵,矩阵只能有一个类。将“条件”作为一列会将数字列更改为character,这会在chisq.test中产生问题。

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

  

x-一个数字矢量或矩阵。 x和y都可以是因子。

因此,仅使用matrix个向量创建numeric,并将“条件”保留为行名。

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