如何解决如何使用 ggplot2 可视化样条回归?
我正在处理 ISLR 库中的工资数据集。我的目标是在3个位置(参见下面的代码)执行与节的花键回归。我可以做这个回归。那部分很好。
我的问题涉及回归曲线的可视化。使用基本 R 函数,我似乎得到了正确的曲线。但是我似乎无法使用 tidyverse 获得完全正确的曲线。 This是期望是什么,以及我所得到的与所述基座的功能:
明显不同。运行 ggplot 函数时,R 给我以下消息:
geom_smooth()`使用方法= 'GAM' 和式“Y〜S(X,BS = “CS”)
这是什么意思,我该如何解决?
library(tidyverse)
library(ISLR)
attach(Wage)
agelims <- range(age)
age.grid <- seq(from = agelims[1],to = agelims[2])
fit <- lm(wage ~ bs(age,knots = c(25,40,60),degree = 3),data = Wage) #Default is 3
plot(age,wage,col = 'grey',xlab = 'Age',ylab = 'Wages')
points(age.grid,predict(fit,newdata = list(age = age.grid)),col = 'darkgreen',lwd = 2,type = "l")
abline(v = c(25,lty = 2,col = 'darkgreen')
ggplot(data = Wage) +
geom_point(mapping = aes(x = age,y = wage),color = 'grey') +
geom_smooth(mapping = aes(x = age,y = fit$fitted.values),color = 'red')
我也试过
ggplot() +
geom_point(data = Wage,mapping = aes(x = age,color = 'grey') +
geom_smooth(mapping = aes(x = age.grid,y = predict(fit,newdata = list(age = age.grid))),color = 'red')
但这看起来与第二张图非常相似。
感谢您的帮助!
解决方法
来自
splines::bs()
的 s(.,type="bs")
和 mgcv
做非常不同的事情;后者是一个惩罚回归样条。我会尝试(未经测试!)
geom_smooth(method="lm",formula= y ~ splines::bs(x,knots = c(25,40,60),degree = 3))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。