h*********o 发帖数: 151 | 1 predict.gam(object, newdata)
如果object我是先用1000个observation 估计的,我想用这个命令预测120个新的点的
值,为什么总是提示:'newdata' had 120 rows but variable(s) found have 1000
rows ???
可是本来预测点的个数就不会和用来fit model的点的个数一样多阿!
怎么修正这个问题啊? |
s*****n 发帖数: 2174 | 2 你确定你newdata里面的变量名和object里面用的是一样的吗?
90%的可能是你newdata 里面的变量名(列名) 和 object里面的不一样.
不一样的话, R会认为缺失prediction varaible, 于是使用默认的
原object里面的variable, 得到的结果是object里面的1000 个 fitted values.
【在 h*********o 的大作中提到】 : predict.gam(object, newdata) : 如果object我是先用1000个observation 估计的,我想用这个命令预测120个新的点的 : 值,为什么总是提示:'newdata' had 120 rows but variable(s) found have 1000 : rows ??? : 可是本来预测点的个数就不会和用来fit model的点的个数一样多阿! : 怎么修正这个问题啊?
|
h*********o 发帖数: 151 | 3 谢谢楼上的大大,predictor我确实没有用一样的名字。可是改正以后,又有新的问题
出现了:
错误于model.frame.default(formula = Y~ lo(x) + z: 变数的长度不一样('lo(x)')
我看了一下,predictor x 和 z 现在都是120个,但是Y还是1000个。可是这里是作预
测阿,那Y的值本来就不知道的呀,这是怎么回事呢? |
s*****n 发帖数: 2174 | 4 肯定还是variable name的问题.
你试试把所有东西都弄成data frame
比如原fit里面, 用
gam(y~x+z, data=...)
反正整理好了以后, 肯定是给你120个fit.
如果你得到的还是1000个fit, 还是说明你的object和newdata没match好.
【在 h*********o 的大作中提到】 : 谢谢楼上的大大,predictor我确实没有用一样的名字。可是改正以后,又有新的问题 : 出现了: : 错误于model.frame.default(formula = Y~ lo(x) + z: 变数的长度不一样('lo(x)') : 我看了一下,predictor x 和 z 现在都是120个,但是Y还是1000个。可是这里是作预 : 测阿,那Y的值本来就不知道的呀,这是怎么回事呢?
|
h*********o 发帖数: 151 | 5 楼上的大大,你是对的,我在fit的时候没有加 data frame, 改正过来以后就没有
问题了,不好意思,我对这structure不熟悉。
不过 predict 的结果是一个矩阵,第一列是x,第二列是z,是不是应该把这两列加
起来,才是fitted value啊?
还有就是stats下面的loess是一样的做法么?它的预测函数是predict(object.lo,data
),我试了一样的做法,把data frame都弄成一样的,但是结果却仍然是1000个Y。这
是怎么回事呢? |
h*********o 发帖数: 151 | |