【问题标题】:Using loops to do Chi-Square Test in R使用循环在 R 中进行卡方检验
【发布时间】:2013-09-21 20:12:24
【问题描述】:

我是 R 新手。我发现以下代码用于对一组变量进行单变量逻辑回归。我想做的是针对因变量对变量列表运行卡方检验,类似于下面的逻辑回归代码。我发现其中几个涉及创建变量的所有可能组合,但我无法让它工作。理想情况下,我希望变量 (X) 之一相同。

Chi Square Analysis using for loop in R

lapply(c("age","sex","race","service","cancer",
         "renal","inf","cpr","sys","heart","prevad",
         "type","frac","po2","ph","pco2","bic","cre","loc"),

       function(var) {

         formula    <- as.formula(paste("status ~", var))
         res.logist <- glm(formula, data = icu, family = binomial)

         summary(res.logist)
       })

【问题讨论】:

标签: r chi-squared


【解决方案1】:

你确定你lapply 的向量中的字符串在icu 数据集的列名中吗?

当我下载 icu 数据时,它对我有用:

system("wget http://course1.winona.edu/bdeppa/Biostatistics/Data%20Sets/ICU.TXT")
icu <- read.table('ICU.TXT', header=TRUE)

并将status 更改为STA,这是icu 中的一列。这是您的一些变量的示例:

my.list <- lapply(c("Age","Sex","Race","Ser","Can"),         
       function(var) {
         formula    <- as.formula(paste("STA ~", var))
         res.logist <- glm(formula, data = icu, family = binomial)
         summary(res.logist)
       })

这给了我一个包含summary.glm 对象的列表。示例:

lapply(my.list, coefficients)
[[1]]
               Estimate Std. Error   z value     Pr(>|z|)
(Intercept) -3.05851323 0.69608124 -4.393903 1.113337e-05
Age          0.02754261 0.01056416  2.607174 9.129303e-03

[[2]]
              Estimate Std. Error    z value     Pr(>|z|)
(Intercept) -1.4271164  0.2273030 -6.2784758 3.419081e-10
Sex          0.1053605  0.3617088  0.2912855 7.708330e-01

[[3]]
              Estimate Std. Error    z value   Pr(>|z|)
(Intercept) -1.0500583  0.4983146 -2.1072198 0.03509853
Race        -0.2913384  0.4108026 -0.7091933 0.47820450

[[4]]
              Estimate Std. Error   z value     Pr(>|z|)
(Intercept) -0.9465961  0.2310559 -4.096827 0.0000418852
Ser         -0.9469461  0.3681954 -2.571858 0.0101154495

[[5]]
                 Estimate Std. Error       z value     Pr(>|z|)
(Intercept) -1.386294e+00  0.1863390 -7.439638e+00 1.009615e-13
Can          7.523358e-16  0.5892555  1.276756e-15 1.000000e+00

如果你想做卡方检验:

my.list <- lapply(c("Age","Sex","Race","Ser","Can"),function(var)chisq.test(icu$STA, icu[,var]))

或对所有变量组合进行卡方检验:

my.list.all <- apply(combn(colnames(icu), 2), 2, function(x)chisq.test(icu[,x[1]], icu[,x[2]]))

这行得通吗?

【讨论】:

  • 嘿,谢谢,回归代码对我有用。我需要类似的东西来运行卡方检验。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-25
  • 1970-01-01
  • 2021-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多