我必须在R中编写一个模拟研究。所以,我有X1,...,X15~N(0,1)解释变量和Y~N(2 + 2 * X1 + 0.8 * X21.2 * X15,1)我需要模拟n = 100的值并重复它为iter = 100次。然后,对于创建的每个线性模型,我必须计算AIC值,最后找到最佳模型。问题是我无法弄清楚如何为item = 100次做到这一点。我为1次模拟编写了代码,其中包括:
set.seed(123)
n<‐100
p<‐15
iter<‐100 X<‐matrix(rep(NA,n*p),ncol=p) for (j in 1:p) {
X[,j]<‐rnorm(n = 100, mean = 0, sd = 1) }
mu<‐(2+2*X[,1])+(0.8*X[,2])‐(1.2*X[,15]) Y<‐rnorm(n = 100, mean = mu , sd = 1)
sim<‐data.frame(Y,X)
d<‐lm(Y~X, data = sim)
但我如何做其余的工作,即100次模拟和AIC的计算?我是R的新手,所以我很困惑。
答案 0 :(得分:1)
这个怎么样
nsim <- 100
nobs <- 100
nvar <- 15
results <- lapply(1:nsim, function(i) {
X <- matrix(rnorm(nobs*nvar),nrow=nobs)
y <- rnorm(nobs, mean=2 + X[,c(1,2,15)]%*% c(2, .8,-1.2))
DF <- data.frame(y, X)
lm(y ~ X, data=DF)})
那应该给你模拟。现在找到“最好的”
findbest <- which.min(sapply(results, function(i) { AIC(i) }))
results[[findbest]]
由于使用相同的基础数据生成过程模拟所有数据,因此AIC的任何变化都是随机变化。