在R中使用lm函数构建模型时遭遇ExtractVars无效模型公式错误
R语言lm模型公式错误解决办法
错误原因
lm()函数要求模型公式右侧是线性预测器,即变量的线性组合形式,不能直接对整个复杂表达式进行非整数幂运算(比如^2.5),这种写法会导致公式解析失败,触发invalid model formula错误。
解决方案
方法一:先计算变换后的变量再拟合
先把公式里的复杂表达式计算成数据框的新列,再用这个新列作为预测变量拟合线性模型:
# 新增变换后的变量列 Parcela_1$calc_var <- (0.1438 + 0.2051*DAP*pespecifico - 0.0744*((DAP-50)*v.dicotomica))^2.5 # 拟合线性模型 modelo1 <- lm(Chou ~ calc_var, data = Parcela_1)
注意事项
- 如果计算
calc_var时出现负数开非整数次方的情况,会生成NA值,需要提前检查数据范围,处理异常值。 - 你的模型本质还是线性模型(系数是线性的),所以这种方法完全适用;如果是参数嵌入表达式内部的非线性模型,才需要用
nls()函数拟合非线性最小二乘。
内容的提问来源于stack exchange,提问作者Mario Gutierrez
相关产品推荐
相关产品推荐

