【问题标题】:simulation study using AIC使用 AIC 进行模拟研究
【发布时间】:2017-05-12 11:09:08
【问题描述】:

我必须在 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 很陌生,所以我很困惑。

【问题讨论】:

  • 不要完全重写问题、代码、假设和使用stepAIC 的要求。如果您想要另一个答案,请开始一个新问题
  • 对不起,我把它改回来了。

标签: r simulation linear-regression


【解决方案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 中的任何变化本质上都是随机变化。

【讨论】:

    猜你喜欢
    • 2019-03-30
    • 1970-01-01
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 2023-01-28
    • 2018-03-31
    相关资源
    最近更新 更多