全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1679 0
2020-05-03
题目要求 题目源自《LSLR》第七章 第9题

我的代码如下:
#1
library(MASS)
data(Boston)
l1=lm(nox~poly(dis,3),data=Boston
l1
nox=Boston$nox
dis=Boston$dis
x_lim=range(dis)
x_simu=seq(from=x_lim[1],to=x_lim[2],by=0.1)
l1_pred=predict(l1,newdata=data.frame(dis=x_simu),se=TRUE)
plot(dis,nox,main="fitted line and two-times std band")
lines(x_simu,l1_pred$fit,col="red",lwd=2)

#2
pl=pl_pred=sse=rep(NA,10)
for(i in 1:10){
  pl=lm(nox~poly(dis,i))
  pl_pred=predict(pl,newdata=list(dis=x_simu))
  lines(x_simu,pl_pred$fit,col=i)
  sse=(pl_pred$residuals)^2
}
plot(1:10,sse,lty=2,pch=16)


三个问题:
一、为什么newdata要求data.frame形式,写newdata=list()也行?
二、“l1_pred=predict(l1,newdata=data.frame(dis=x_simu),se=TRUE)”一句中dis改为其他,为什么就会报错?
三、lines不是在现有图上加线吗?为什么向量长度必须和plot一致?
四、第二问我的代码会如下报错,应该怎么讲十条拟合曲线画进一张图?
Error in UseMethod("predict") : "predict"没有适用于"list"目标对象的方法
此外: Warning message:
In pl <- lm(nox ~ poly(dis, i)) : 被替换的项目不是替换值长度的倍数



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群