使用 AIC 进行模拟研究
simulation study using AIC
我必须在 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)
但是我如何完成剩下的工作,i.e.the 100 次模拟和 AIC 的计算?我对R真的很陌生,所以我很困惑。
这个怎么样
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)})
这应该给你你的模拟。现在找到 "best"
findbest <- which.min(sapply(results, function(i) { AIC(i) }))
results[[findbest]]
由于所有数据都是使用相同的基础数据生成过程模拟的,因此 AIC 中的任何变化本质上都是随机变化。
我必须在 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)
但是我如何完成剩下的工作,i.e.the 100 次模拟和 AIC 的计算?我对R真的很陌生,所以我很困惑。
这个怎么样
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)})
这应该给你你的模拟。现在找到 "best"
findbest <- which.min(sapply(results, function(i) { AIC(i) }))
results[[findbest]]
由于所有数据都是使用相同的基础数据生成过程模拟的,因此 AIC 中的任何变化本质上都是随机变化。