如何在R中对回归模型中的每个系数运行regTermTest?

如何在R中对回归模型中的每个系数运行regTermTest?,r,for-loop,lapply,R,For Loop,Lapply,我想使用survey软件包(如上所述)的regTermTest功能运行Wald测试,以评估模型中每个系数的统计显著性 regTermTest的语法调用model,后跟test.terms,但如果列出多个测试术语,则似乎是将它们全部计算在一起,而不是单独计算 library(caret) # for the GermanCredit sample dataset data(GermanCredit) mod1 <- glm(Class ~ Age + as.factor(ForeignWor

我想使用
survey
软件包(如上所述)的
regTermTest
功能运行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"))
#
我尝试将系数名称提取到一个向量中,并将其插入到
for
循环中,但没有成功(它将所有术语合并到一个计算中,而不是单独估计它们的重要性):

vars(更新)

*apply
系列可以提供帮助,具体取决于您希望事物的外观

lapply(names(mod1$model)[-1], function(x) regTermTest(mod1, x))

sapply(names(mod1$model)[-1], function(x) regTermTest(mod1, x))
如果希望以一种好的方式显示结果,您将有一些工作要做

(更新说明)。


最初的解决方案只是遵循提问者的想法,即使用
名称(mod1$系数)
。但如果存在因子变量,这将不起作用,因为
mod1$coverties
将包含变量名称,该名称与非默认值连接在一起,就像
R
回归模型总是处理分类变量一样。这让人困惑
regTermTest
,因为它在数据集中寻找一个不存在的变量,因此返回了一条令人困惑的错误消息。

它不起作用……我们经常会听到这种毫无帮助的评论。错误或不希望出现的结果是什么?不希望出现的结果是,它将所有术语合并到一个评估中,而不是单独评估它们的重要性。我编辑问题是为了添加此信息。是的,将结果保存在列表或其他对象中是可取的。我编辑问题是为了澄清这一点。逐行代码是理想的结果——它很容易做到,但编程很糟糕,因为它是重复的。我正在寻找一个比复制和粘贴代码以及手动更改变量名更好的解决方案。谢谢。它对示例数据起作用,但对我的真实数据给出了一个错误:
解算时出错。默认值(V):'a'是0-diml
。我意识到这是因为我的实际数据包含因素,但样本数据没有。我已经更新了上面的样本数据集。我很抱歉,但是你知道对你的代码有什么调整可以接受带有因子变量的回归公式吗(根据上面更新的样本数据)?因子变量会发生什么?我不相信wald统计可以在分类变量上运行。然后考虑一个<代码> TyGrace,以返回NAs为这些问题元素:<代码> SpApple(名称(MOD1 $系数)[-1 ],函数(x)TryCAMP(ReGtMtTest[MOD1,x),Error=函数(e)NA)< /代码>我不知道为什么,但是<代码> ReReTMestTest<代码>对我的真实数据的工作变量很好:<代码> ReReTMTEST(MOD1,“外籍工作者”)
其中
外籍工人
是一个因素。然而,当我在那里考虑外籍工人时,我无法使其与上面的示例数据一起工作。我看到其他人在求解时也有同样的
错误。默认值(V):“a”在使用
regTermTest
时是0-diml
错误,但似乎没有找到解决方案:
regTermTest
可以很好地处理因子变量。当您给它一个不在数据集中的变量名时,它会感到困惑。请参阅我编辑的答案,了解正在发生的事情的解释。
vars <- names(mod1$coefficients)
vars <- vars[-1]
for (i in 1:length(vars)) {
     iv = vars[i]
     rtest <- regTermTest(mod1, iv)
}
lapply(names(mod1$model)[-1], function(x) regTermTest(mod1, x))

sapply(names(mod1$model)[-1], function(x) regTermTest(mod1, x))