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)