【发布时间】:2018-02-20 16:57:07
【问题描述】:
我想使用 survey 包的 regTermTest 函数(如 here 所述)运行 Wald 检验以评估模型中每个系数的统计显着性。
regTermTest 的语法调用model,后跟test.terms,但如果您列出多个测试术语,它似乎将它们一起评估而不是单独评估。
library(caret) # for the GermanCredit sample dataset
data(GermanCredit)
mod1 <- glm(Class ~ Age + as.factor(ForeignWorker) + Property.RealEstate + Housing.Own + CreditHistory.Critical, data = GermanCredit, family = binomial(link='logit'))
library(survey)
regTermTest(mod1, c("Age", "ForeignWorker", "Property.RealEstate", "Housing.Own", "CreditHistory.Critical"))
#
当然,我可以用这种方式将它们分开,但它很笨重且重复(即以下代码产生了预期的结果,但在处理大量变量时效率低下):
regTermTest(mod1, "Age")
regTermTest(mod1, "ForeignWorker")
regTermTest(mod1, "Property.RealEstate")
regTermTest(mod1, "Housing.Own")
regTermTest(mod1, "CreditHistory.Critical")
我尝试将系数名称提取到向量中并将其插入for 循环,但没有奏效(它将所有项组合到一个评估中,而不是单独估计它们的重要性):
vars <- names(mod1$coefficients)
vars <- vars[-1]
for (i in 1:length(vars)) {
iv = vars[i]
rtest <- regTermTest(mod1, iv)
}
如何有效地编写代码?
【问题讨论】:
-
它没有用...我们经常得到这个无益的评论。错误或不良结果是什么?
-
不希望的结果是它将所有术语组合到一个评估中,而不是单独估计它们的重要性。我已编辑问题以添加此信息。
-
是的,最好将结果保存在列表或其他对象中。
-
我已编辑问题以澄清这一点。逐行代码是期望的结果——它很容易做到,但由于重复,编程很糟糕。我正在寻找比手动复制和粘贴代码以及更改变量名称更好的解决方案。