R:对具有高维度的新数据使用predict()

时间:2015-02-28 00:40:23

标签: r warnings lm predict

因此,我想用来解决问题的示例代码是这里看到的最后一个块。 基本上,我在此处发现的类似线程的理解是,为了使用模型从新数据集进行预测,您必须在新数据集中使用与您使用的数据相同的变量名称在你的初始模型中。运行我的示例代码将产生以下消息:

Warning message:
'newdata' had 10 rows but variable(s) found have 100 rows 

在这个简单的案例中,显而易见的答案就是写下:

model = lm(Y ~ A + B + C, data = newdata)

然后使newdata.2中的列名与newdata中的列名相同。

然而,当预测变量的数量相对较大(比如说50或100)时,这并不是一个实用的选择。有没有一种好方法可以使用R中的标准predict()和lm()函数来处理这个问题?

## Generate Predictor variables
A = rnorm(100)
B = rnorm(100)
C = rnorm(100)

X = cbind(A,B,C)
X.design = model.matrix(~ X)

## Create Response variable
beta.star = c(0,0,1,2)
Y = X.design %*% beta.star + rnorm(100)

## Mock data.frame
newdata = data.frame(cbind(Y,X))
colnames(newdata) = c("Y","A","B","C")  

## Fit model
m1 = lm(Y ~ X.design - 1, data  = newdata)

## create mock new data 
d = rnorm(10)
e = rnorm(10)
f = rnorm(10)

newdata.2 = data.frame(cbind(d,e,f))

## Predict new data
predict(m1, newdata = newdata.2)

希望这一切都很清楚。我很感激帮助!

0 个答案:

没有答案