假设我们有一个线性模型 f1 适合一些 xy 数据点:

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?-LMLPHP
(黑色为原始数据,红色为模拟)

关于r - 如何从 R 中的线性模型在特定 X 处生成随机 Y?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15889174/

10-12 20:12