R语言lm函数对前序回归残差做二次回归时报错的原因
问题原因
lm() 函数要求传入的第一个参数必须为符合R语法规则的回归公式,格式为 因变量 ~ 自变量,你编写的 reg1b <- lm(dat$rent,reg1a$residuals) 不符合该函数的参数要求:lm() 默认第二个参数为数据集对象,你传入残差向量后,系统会尝试把第一个参数 dat$rent 解析为回归公式,自然就会抛出公式无效的报错。
修正方法
你可以任选以下任意一种写法实现需求:
- 直接在公式中指定自变量为第一次回归的残差:
reg1b <- lm(dat$rent ~ reg1a$residuals)
- 更规范的写法是先把残差存入原数据集,再调用回归:
# 将第一次回归的残差存入数据集dat dat$resid_reg1a <- reg1a$residuals # 传入数据集参数做回归,后续提取结果也更便捷 reg1b <- lm(rent ~ resid_reg1a, data = dat)
内容的提问来源于stack exchange,提问作者Ponja
相关产品推荐
相关产品推荐

