R 功能是如何实现的;模拟;工作,概念上?

R 功能是如何实现的;模拟;工作,概念上?,r,simulate,R,Simulate,如果我的问题看起来过于简单或幼稚,我提前表示歉意,但我试图理解函数simulate在概念上的作用(即,我对它的逻辑感兴趣,与它是否应用于lm、lme等无关) 假设我正在对以下数据进行简单的多元回归: n <- 40 x1 <- rnorm(n, mean=3, sd=1) x2 <- rnorm(n, mean=4, sd=1.25) y <- 2*x1 + 3*x2 + rnorm(n, mean=2, sd=1) mydata <- data.frame

如果我的问题看起来过于简单或幼稚,我提前表示歉意,但我试图理解函数
simulate
在概念上的作用(即,我对它的逻辑感兴趣,与它是否应用于lm、lme等无关)

假设我正在对以下数据进行简单的多元回归:

n <- 40

x1 <- rnorm(n, mean=3, sd=1)

x2 <- rnorm(n, mean=4, sd=1.25)

y <- 2*x1 + 3*x2 + rnorm(n, mean=2, sd=1)

mydata <- data.frame(x1, x2, y)

mod <- lm(y ~ x1 + x2, data=mydata)
我得到的两个向量是什么

本质上,它是否类似于:

replicate(2, y + rnorm(n=length(y), mean="some value", sd="some other value"))
如果它与这种逻辑相似,那么“某些价值”和“某些其他价值”是什么?它们是
平均值(mod$residuals)
还是
sd(mod$residuals)
?还是实际残差的排列?或者完全是别的什么

还是它在做完全不同的事情


如果有人能用简单的、非技术性的术语解释/确认
simulate
的工作原理,我们将不胜感激。

它基本上实现了帮助文件所述的功能:“模拟与拟合模型对象对应的分布中的一个或多个响应。”

因此,对于每个模拟,从结果变量的条件分布中随机抽取一个变量,条件是协变量。此条件分布在
lm
中默认为正态分布。此正态分布的标准偏差对应于
mod
的MSE的sqrt

下面的代码复制了输出(假设您使用相同的种子):

set.seed(1)
头部(模拟(mod,nsim=2))
种子(1)
对于(1:nsim中的i){

tmp您可以使用
stats:::simulate.lm
查看源代码。但是,由于这更多是关于统计概念的,我建议您使用over Stack Overflow。
replicate(2, y + rnorm(n=length(y), mean="some value", sd="some other value"))
set.seed(1)
head(simulate(mod, nsim=2))

set.seed(1)
for(i in 1:nsim) {
  tmp <- predict(mod) + rnorm(length(predict(mod)), 0, summary(mod)$sigma)
  res <- if (i==1) tmp else cbind(res, tmp)
}
head(res)