【发布时间】:2020-01-07 23:03:57
【问题描述】:
我可以通过将lm() 的输出分配给一个名称(如fit_lm)来生成拟合线性模型的预测,然后使用带有该名称的predict() 来生成对newdata 的预测(参见下面的reprex)。
随着大回归,lm() 对象可能会变大,因为它们会携带适合它们的原始数据以及其他一些潜在的大数据。当我在许多数据集上以自动方式执行此操作时,单个 lm 对象可能会占用大量空间,我不想随身携带整个 lm 对象。我想从我可以存储和用于预测的拟合中提取预测函数。有没有一种简单的方法可以从拟合中提取/构造一个进行预测的函数?在我在 cmets 中的 reprex 的最底部是我设想代码如何工作的示例。
# Do a lm fit
set.seed(1234)
df <- data.frame(x = 1:9, y = 2 * 1:9 + 3 + rnorm(9, sd = 0.5))
fit <- lm(y ~ x, df)
summary(fit)
#>
#> Call:
#> lm(formula = y ~ x, data = df)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -1.0125 -0.1178 -0.1007 0.3780 0.6995
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 2.8519 0.4035 7.068 0.000199 ***
#> x 1.9969 0.0717 27.851 1.98e-08 ***
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 0.5554 on 7 degrees of freedom
#> Multiple R-squared: 0.9911, Adjusted R-squared: 0.9898
#> F-statistic: 775.7 on 1 and 7 DF, p-value: 1.976e-08
# Predict it
predict(fit, data.frame(x = 5:6))
#> 1 2
#> 12.83658 14.83351
# Like to see that I could extract the fit as a function that could be used:
#
# f <- regressionFunction(fit)
# vector_of_fits <- f(data.frame(x = 5:6))
#
# vector_of_fits would equal:
#> 1 2
#> 12.83658 14.83351
由reprex package (v0.3.0) 于 2020-01-07 创建
【问题讨论】:
标签: r