我想使用 survey
包的 regTermTest
函数运行 Wald 检验来评估模型中每个系数的统计显着性(如所述 here ) 。
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)
}
如何有效地编写此代码?
最佳答案
(已更新)
*apply
系列可以提供帮助,具体取决于您想要的外观。
lapply(names(mod1$model)[-1], function(x) regTermTest(mod1, x))
sapply(names(mod1$model)[-1], function(x) regTermTest(mod1, x))
如果您想以良好的方式显示结果,您需要做一些工作。
(更新说明)。
最初的解决方案只是按照提问者的想法使用names(mod1$coefficients)
。但如果存在因子变量,则该方法不起作用,因为 mod1$coefficients
将包含以 R
的方式与非默认值连接的变量名称> 回归模型总是处理分类变量。这让 regTermTest 感到困惑,因为它会在数据集中查找不存在的变量,因此会返回令人困惑的错误消息。
关于r - 如何对 R 回归模型中的每个系数运行 regTermTest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48890406/