使用新数据 returns 拟合值评估线性模型
Evaluating linear model with new data returns fitted values
我正在构建和评估我的模型,如下所示。
yData <- rnorm(10)
xData <- matrix(rnorm(20), 10, 2)
polyModel <- lm(yData~polym(xData, degree=2, raw=T))
newData <- matrix(rnorm(100), 50, 2)
yPredicted <- predict(polyModel, polym(newData, degree=2, raw=T))
但是,模型评估 yPredicted
恰好等于拟合值 polyModel$fitted.values
,一个长度为 10 的向量。在这种情况下,我期望 yPredicted
是一个长度为 50 的向量.如果能提供一些帮助,我们将不胜感激。
除非数据在 data
参数中指定,否则 predict()
不能很好地工作。这似乎有效:
polyModel <- lm(yData~poly(V1, V2, degree=2, raw=TRUE),
data=as.data.frame(xData))
length(fitted(polyModel)) ## 10
newData <- matrix(rnorm(100), 50, 2)
yPredicted <- predict(polyModel, newdata=as.data.frame(newData))
length(yPredicted) ## 50
V1
和 V2
是将矩阵转换为数据框时指定的默认列名称。
- 如果您要将未知的 and/or 大量列放入多项式(例如
poly(V1, ..., V1000, degree=2, raw=TRUE)
) ,则此规范将无法正常工作
如果您事先不知道列数,稍微 hacky 的解决方案是:
f <- as.formula(sprintf("yData~poly(%s, degree=2, raw=TRUE)",
paste("V", seq(ncol(xData)), sep="", collapse=", "))
polyModel <- lm(f, data=as.frame(xData))
(未经测试)
我正在构建和评估我的模型,如下所示。
yData <- rnorm(10)
xData <- matrix(rnorm(20), 10, 2)
polyModel <- lm(yData~polym(xData, degree=2, raw=T))
newData <- matrix(rnorm(100), 50, 2)
yPredicted <- predict(polyModel, polym(newData, degree=2, raw=T))
但是,模型评估 yPredicted
恰好等于拟合值 polyModel$fitted.values
,一个长度为 10 的向量。在这种情况下,我期望 yPredicted
是一个长度为 50 的向量.如果能提供一些帮助,我们将不胜感激。
data
参数中指定,否则 predict()
不能很好地工作。这似乎有效:
polyModel <- lm(yData~poly(V1, V2, degree=2, raw=TRUE),
data=as.data.frame(xData))
length(fitted(polyModel)) ## 10
newData <- matrix(rnorm(100), 50, 2)
yPredicted <- predict(polyModel, newdata=as.data.frame(newData))
length(yPredicted) ## 50
V1
和V2
是将矩阵转换为数据框时指定的默认列名称。- 如果您要将未知的 and/or 大量列放入多项式(例如
poly(V1, ..., V1000, degree=2, raw=TRUE)
) ,则此规范将无法正常工作
如果您事先不知道列数,稍微 hacky 的解决方案是:
f <- as.formula(sprintf("yData~poly(%s, degree=2, raw=TRUE)",
paste("V", seq(ncol(xData)), sep="", collapse=", "))
polyModel <- lm(f, data=as.frame(xData))
(未经测试)