如何对 lm 多项式对象使用预测

问题描述

X 取自 [-4,4] 上的均匀分布,e 取自标准正态 (mu=0,sigma^2=1)。数据生成过程1:Y=-2 1{X-2}-2 1{X>0} + 4 1{X>2} -1 1{X>3} + e.

从四个 DGP 中的每一个生成一个大小为 n=100 的数据集。对于 d=1,...,10 阶多项式的 OLS 拟合,计算样本内 MSE 和 k=10 的交叉验证 MSE。

工作

生成数据

X=runif(100,-4,4)
Y1=numeric(100)
for (k in 1:100) {
  Xk=X[k]
  sum=0
  if (Xk<-3) sum=sum-2
  if (Xk>-2) sum=sum+2.55
  if (Xk>0) sum=sum-2
  if (Xk>2) sum=sum+4
  if (Xk>3) sum=sum-1
  e=rnorm(1,1)
  sum=sum+e
  Y1[k]=sum
}
#same commands
m10=lm(Y1~poly(X,10))
m10=lm(Y1~X+I(X^2)+I(X^3)+I(X^4)+I(X^5)+I(X^6)+I(X^7)+I(X^8)+I(X^9)+I(X^10))

问题 我不知道如何使用预测功能

> predict(object=m10,0)

给出输出

       1        2        3        4        5        6        7        8        9       10       11       12 
2.863446 2.497659 2.884034 2.871652 2.497237 2.318076 2.160669 2.634431 3.051059 2.268375 2.168812 2.646038 
      13       14       15       16       17       18       19       20       21       22       23       24 
2.424352 3.368008 2.789967 2.885192 3.542624 2.899901 2.194472 2.599616 2.661081 2.763214 2.273975 2.172357 
      25       26       27       28       29       30       31       32       33       34       35       36 
2.874099 2.550469 2.048053 2.660202 2.398004 2.303471 2.376572 2.519647 2.912444 2.368784 2.607784 2.450676 
      37       38       39       40       41       42       43       44       45       46       47       48 
2.218725 2.645968 2.169992 2.647017 2.576442 1.897214 2.171605 2.449809 2.226052 2.873677 2.539433 2.223674 
      49       50       51       52       53       54       55       56       57       58       59       60 
2.710617 2.430183 2.248568 2.756237 2.038355 2.180742 2.344275 2.203951 2.260451 2.123556 2.834811 2.882292 
      61       62       63       64       65       66       67       68       69       70       71       72 
2.745008 2.751386 2.850210 2.278614 2.148028 2.098971 2.110101 2.030423 2.419311 2.645541 3.475426 2.142720 
      73       74       75       76       77       78       79       80       81       82       83       84 
2.694354 2.528259 2.732289 2.841857 2.236563 2.217709 2.606259 2.027136 2.172344 2.900054 2.508226 2.105699 
      85       86       87       88       89       90       91       92       93       94       95       96 
2.383329 2.154554 2.742532 2.219934 2.759548 2.386012 2.103983 3.475680 2.884486 2.156282 2.283541 2.497032 
      97       98       99      100 
2.348867 2.233176 2.837710 2.779434 

这不是我想要的。我想将 0 插入拟合多项式!这是拟合多项式的图片,例如f(0) 应该是大约 2.1。如何得到这个结果?

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)