R语言polym()多元多项式回归输出解读及回归方程导出方法
系数后缀标识的含义
你看到的系数项末尾的点分标识,就是对应两个自变量的幂次,规则完全固定:
- 调用
polym(第一个自变量, 第二个自变量, degree = 阶数, raw = TRUE)拟合原始多项式时,每个非截距项的后缀为a.b格式,分别代表第一个自变量的a次幂、第二个自变量的b次幂 - 你看到的后缀里的
o是输出排版时数字0的显示讹变,代表对应变量的0次幂,也就是该项不包含这个变量
对应你给出的几个系数项,匹配关系如下: 1.o即1.0:对应项为 $Indy^1 * HI^0 = Indy$,是Indy的一次主效应项2.o即2.0:对应项为 $Indy^2 * HI^0 = Indy^2$,是Indy的二次主效应项1.1:对应项为 $Indy^1 * HI^1 = Indy*HI$,是两个变量的一阶交互项
可用回归方程的转换方法
首先注意:你贴的拟合代码末尾缺失了一个右括号,实际运行时需要补全为ploy_lm <- lm(df$SV ~ polym(df$Indy, df$HI, degree = 3, raw = TRUE), data = df)才能正常执行。
因为你设置了raw = TRUE,polym生成的是原始幂次基,不需要做正交基逆转换,直接按系数对应项拼接即可,步骤如下:
- 提取模型所有系数:包括截距,以及所有polym生成的项的估计值。你目前只列出了4个系数(截距+3个多项式项),而3阶二元多项式完整包含所有幂次和≤3的项,总计10个系数,需要先把系数表的所有结果提取完整。
- 逐项匹配幂次:把每个多项式项的后缀按前面说的规则拆成两个幂次,将
o替换为0,明确每个项的变量构成。 - 拼接方程:预测值$\hat{SV}$等于截距加上所有「系数值 * Indy^a * HI^b」的项之和。
按你目前给出的系数,可确定的方程片段为:
SV_预测值 = -8.903 + 1.189 * Indy - 0.01651 * Indy^2 + 0.0008247 * Indy * HI + 其余未列出的多项式项 * 对应系数
注意:如果没有设置
raw=TRUE,使用polym默认的正交多项式基时,不能直接按上述方法拼接原始变量方程,必须用raw模式输出的系数才能直接导出到其他应用使用,否则预测结果会完全错误。
内容的提问来源于stack exchange,提问作者Koda
相关产品推荐
相关产品推荐

