假设我们有一个线性模型 f1
适合一些 x
和 y
数据点:
f1 <- lm(y ~ x,data=d)
如何使用适合 R 的
y
在新 x
值(与旧 x
值不同但在旧 x
值范围内)生成新 f1
值? 最佳答案
stats:::simulate.lm
允许您从拟合有 lm
的线性模型中采样(与 the approach of @Bulat 相比,它使用残差方差的无偏估计)。要模拟自变量的不同值,您可以像这样修改:
# simulate example data
x <- runif(20, 0, 100)
y <- 5*x + rnorm(20, 0, 10)
df <- data.frame(x, y)
# fit linear model
mod <- lm(y ~ x, data = df)
# new values of the independent variable
x_new <- 1:100
# replaces fitted values of the model object with predictions for new data,
mod$fitted.values <- predict(mod, data.frame(x=x_new)) # "hack"
# simulate samples appropriate noise and adds it the models `fitted.values`
y_new <- simulate(mod)[, 1] # simulate can return multiple samples (as columns), we only need one
# visualize original data ...
plot(df)
# ... alongside simulated data at new values of the independent variable (x)
points(x_new, y_new, col="red")
(黑色为原始数据,红色为模拟)
关于r - 如何从 R 中的线性模型在特定 X 处生成随机 Y?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15889174/