绘制线性与非线性多元回归模型的添加变量图
当然可以!avPlots()函数本身就支持生成单张的添加变量图,完全满足你“为每个预测变量单独绘图、控制其他变量不变”的需求,下面给你两种实用的实现方法:
方法1:直接指定单个变量绘制
avPlots()的terms参数可以让你精准指定要单独绘制的预测变量,注意对于多项式这类特殊项,要使用模型中对应的变量名称(你可以通过names(model$coefficients)查看模型里的变量标识)。
示例代码:
library(car) library(broom) library(jtools) # 先拟合你的模型 model <- lm(mpg ~ poly(disp,3) + wt + carb + factor(gear), data = mtcars) # 可选:查看模型中的所有变量名称,确认多项式项的正确写法 names(model$coefficients) # 生成单个变量(比如wt)的添加变量图 avPlots(model, terms = "wt") # 生成非线性项poly(disp,3)的添加变量图 avPlots(model, terms = "poly(disp, 3)") # 生成分类变量factor(gear)的添加变量图 avPlots(model, terms = "factor(gear)")
这种方法最直接,你还可以循环遍历所有预测变量,批量生成单张图,完全适配你的需求。
方法2:从批量图中提取单张展示
如果你已经生成了所有变量的添加变量图,也可以把它们存储为对象,再通过索引提取单张图单独显示:
# 生成所有图并存储,ask=FALSE避免弹窗询问 all_avplots <- avPlots(model, ask = FALSE) # 提取第2个图(对应wt,索引可根据变量顺序调整) all_avplots[[2]]
另外要提醒你:添加变量图展示的是控制其他所有预测变量不变时,响应变量与目标预测变量的偏残差关系,对于你模型中的非线性项(比如poly(disp,3)),图中会自动拟合对应的曲线,能清晰呈现非线性趋势,正好匹配你的需求。
内容的提问来源于stack exchange,提问作者user138089
相关产品推荐
相关产品推荐

