2017-02-04 83 views
0

从下面的代码预测区间,我试图找到预测区间(95%)时“循环”是0.5和20:寻找具有多项式

AdvRev = read.csv(url("http://www.stat.tamu.edu/~sheather/book/data_sets.php/AdRevenue.csv"), header=TRUE) 
y = AdvRev$AdRevenue 
x = AdvRev$Circulation 

xsquared=x^2 
xcubed=x^3 
#I used polynomial regression since it fits better than y~x 
m6 = lm(y~x+xsquared+xcubed, data=AdvRev) 

#Bad leverage points were removed from the model. 
m9 <- update(m6, subset=(1:70)[-c(2,5,8,20,49,60)]) 
summary(m9) 

试图用下面的代码来找到最终拟合模型的间隔(m9):

predict(m9, newdata=data.frame(x = c(0.5,20)), interval="prediction",level=0.95) 

但是,它没有给出有效的答案。如果你可以纠正我的最终代码,我会非常感激。

+0

这是显示了最后一行的结果: '''“newdata”了2行,但变量发现有70行 显示回溯 错误model.frame.default(条款,newdata,na.action = na.action,xlev = object $ xlevels):可变长度不同(找到'xsquared')''' – Taner

+1

你看过'AdvRev'的内容吗?这些例子似乎没有可重现性。为了预测,模型中的所有变量必须位于新的data.frame中。你只有'x'。不是'xsquared'和'xcubed'。所以这就是为什么我们通常不用这种方式来做多项,我们使用'poly'函数。 'lm(y〜poly(x,3,raw = TRUE),data = AdvRev)' – MrFlick

+0

这给了我答案@MrFlick非常感谢。 – Taner

回答

0

因此,感谢@MrFlick,我们了解到我们应该在创建多项式线性回归模型时使用多项式函数。