【问题标题】:How to compute high dimensional regression statistics如何计算高维回归统计
【发布时间】:2020-05-23 01:07:59
【问题描述】:

我下面有一个模型

A = matrix(1, nrow = 400, ncol = 400)
A = 0.5**abs(row(A) - col(A))
X=mvtnorm::rmvnorm(300,mean=rep(0,400),sigma=A)))  
Y=X[,6]+X[,12]+X[,15]+X[,20]+0.7*pnorm(X[,1])*rnorm(300) 
df <- data.frame(Y, X)

我想给它安装最小二乘套索。我需要总结以下几点:

  1. 模拟运行中包含 X6、X12、X15 和 X20 的次数百分比
  2. 包括 X1 在内的模拟运行比例

我如何计算 1. 和 2.?结果应该是 100% 和 6%。

av_model_size <- c(NULL)
a1 <- c(NULL)
a2 <- c(NULL)
for (i in 1:100) {
  lassocv <- glmnet::cv.glmnet(X, Y, alpha = 1)
  modelcv <- glmnet::glmnet(X, Y, alpha = 1, lambda = lassocv$lambda.min, standardize = TRUE)
  lasso.coef <- modelcv$beta
  av_model_size[[i]] <- sum(lasso.coef!=0)
  a1[[i]] <- sum(lasso.coef[6] != 0 && lasso.coef[12] != 0 && lasso.coef[15] != 0 && lasso.coef[20] != 0)
  a2[[i]] <- sum(lasso.coef[1] != 0)
}

平均值(ams)

【问题讨论】:

  • 您是在为整个过程而苦苦挣扎,还是在精确的步骤上苦苦挣扎?听起来您需要做的就是将代码包装在一个循环中并收集相关 X 的系数,然后计算它们与 0 不同的频率。
  • 是的,整个过程,我该怎么做?
  • 正如我所说,您将代码包装到一个循环中以重复 1000 次,并且每次都存储最终模型的系数。然后你计算它们与 0 不同的频率。
  • 感谢您的建议 - 我试图实现重复的模拟,但是当我取平均值(a1),平均值(a2)时值非常低
  • 好的,请参阅下面的答案,这里的评论有点太长了。 @Btzzzz

标签: r regression


【解决方案1】:

您需要在模拟过程中包含数据生成。正如您概述的示例一样,您正在对同一组数据执行函数。考虑以下几点:

set.seed(42)

get_simulated_data <- function(){
  A = matrix(1, nrow = 400, ncol = 400)
  A = 0.5**abs(row(A) - col(A))
  X = mvtnorm::rmvnorm(300,mean=rep(0,400),sigma=A)
  Y = X[,6]+X[,12]+X[,15]+X[,20]+0.7*pnorm(X[,1])*rnorm(300)
  dat <- list(Y=Y, X=X)
  return(dat)
}

get_coefficients <- function(){
  dat <- get_simulated_data()
  lassocv <- glmnet::cv.glmnet(dat$X, dat$Y, alpha = 1)
  modelcv <- glmnet::glmnet(dat$X, dat$Y, alpha = 1, lambda = lassocv$lambda.min, standardize = TRUE)
  return(modelcv$beta)
}


out <- do.call(cbind, lapply(1:100, function(i) get_coefficients()))

rowMeans(out[c("V1", "V6", "V12", "V15", "V20"),] == 0)
  V1   V6  V12  V15  V20 
0.93 0.00 0.00 0.00 0.00 

【讨论】:

    猜你喜欢
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    • 2015-09-28
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多