R从model.frame中恢复原始data.frame

标签 r regression linear-regression lm mgcv

在 R 中,您可以拟合 mgcv 中的 GAM 模型使用包含转换的公式进行打包,例如 logsqrt默认情况下 model.frame返回(仅在公式中指定的变量应用了转换)。

有什么方法可以恢复未转换的data.frame ?

示例:

reg <- mgcv::gam(log(mpg) ~ disp + I(hp^2), data=mtcars)

返回

> head(reg$model,3) log(mpg) disp I(hp^2) Mazda RX4 3.044522 160 12100 Mazda RX4 Wag 3.044522 160 12100 Datsun 710 3.126761 108 8649

但是,我想从模型的 model.frame 中获取这个未转换数据集

mpg disp hp Mazda RX4 21.0 160 110 Mazda RX4 Wag 21.0 160 110 Datsun 710 22.8 108 93

一些背景:newdata大多数模型的参数predict()函数需要未转换的数据,所以我无法提供 model.frame回到predict()功能。我已经知道省略 newdata参数将返回拟合值。我的要求是模型对象将原始数据返回给我。

最佳答案

这是一种方法:使用 glm 而不是 lm,即使对于高斯数据也是如此。 glm 返回比 lm 更多的东西,包括原始数据帧。


好吧,如果你问mgcv问题,你最好提供一个mgcv例子。

mgcvglm 标准一致。阅读 ?gamObject 以获得 gam 可以返回的完整列表。如果您通过 gamcontrol 参数设置 keepData,您将看到它可以返回 data。调用 gam 时,添加以下内容

control = gam.control(keepData = TRUE)

这是一个简单的、可重现的例子:

dat <- data.frame(x = runif(50), y = rnorm(50))
library(mgcv)
fit <- gam(y ~ s(x, bs = 'cr', k = 5), data = dat, control = gam.control(keepData = TRUE))
head(fit$model)  # model frame
head(fit$data)  # original data

关于R从model.frame中恢复原始data.frame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42878379/

相关文章:

r - R 中具有非线性外生变量的 ARIMA 模型

R 重复序列每个重复加 1

r - R 中 xgboost 模型的部分依赖图

r - 随着时间的推移累计金额

r - 使用 stat_summary 用观察次数注释绘图

r - R 中的 k-NN 回归问题

r - 使用 MICE 插补绘制适度回归中的交互项

r - 如何估计一系列线性段以拟合指数曲线?

machine-learning - 线性回归爆炸的梯度下降

java - 拯救 Lib Linear for Java 中的所有预测结果