R 套索分析(glmnet软件包)。我可以循环分析和结果提取吗?

R 套索分析(glmnet软件包)。我可以循环分析和结果提取吗?,r,glmnet,R,Glmnet,我使用的是glmnet软件包,我需要运行几个套索分析来校准大量变量(整个光谱中每个波长的反射率)与一个因变量。我对我希望解决的程序和结果有一些疑问。我在下面显示我的临时代码: 首先,我将数据分为训练集(n的70%)和测试集 smp_size <- floor(0.70 * nrow(mydata)) set.seed(123) train_ind <- sample(seq_len(nrow(mydata)), size = smp_size) train <- mydata[

我使用的是glmnet软件包,我需要运行几个套索分析来校准大量变量(整个光谱中每个波长的反射率)与一个因变量。我对我希望解决的程序和结果有一些疑问。我在下面显示我的临时代码:

  • 首先,我将数据分为训练集(n的70%)和测试集

    smp_size <- floor(0.70 * nrow(mydata))
    set.seed(123)
    train_ind <- sample(seq_len(nrow(mydata)), size = smp_size)
    train <- mydata[train_ind, ]
    test <- mydata[-train_ind, ]
    

    smp_size一般来说,在同一数据上反复运行相同类型的重复分析可能会很棘手。在你的情况下,可能没有必要像你所概述的那样

    如果你试图找到最具预测性的变量,你可以使用PCA,主成分分析来选择变量和变量之间变化最大的变量,但是它根本不考虑你的结果,因此,如果您的模型设计很差,它将选择存储库中相关性最低的数据,但可能无法预测。因此,您应该非常了解集合中的所有变量。对于某种线性或逻辑回归,这将是一种降低数据维度的方法


    yourPCA那么,您希望引导100个训练变量和拟合样本,并取100个预测结果的平均值?或者你想做100次,然后用最好的?如果是后者,你将增加过度拟合的几率,如果是前者,你将增加过度拟合的几率……那么这样做的目的是什么呢?感谢你的repply@sconfluentus,我们的想法是重复100次数据分割(分为训练集和测试集)以及接下来的步骤(模型拟合,系数提取,最终得到预测值与实际值之间的R2预测精度)。首先,我想知道模型几乎总是根据非零系数选择哪些变量(例如80%的次数).其次,我想对所有模型的R2取平均值。我是这方面的新手,所以如果有任何更正,我将不胜感激。
    
    vars.train <- train[3:2153]
    vars.test <- test[3:2153]
    
    x.train <- data.matrix(vars.train)
    x.test <- data.matrix(vars.test)
    y.train <- train$X1
    y.test <- test$X1
    
    install.packages("glmnet")
    library(glmnet)
    cv.lasso.1 <- cv.glmnet(y=y.train, x= x.train, family="gaussian", nfolds = 
    5, standardize=TRUE, alpha=1)
    
    coef(cv.lasso.1,s=cv.lasso.1$lambda.min) # Using lambda min.
    (cv.lasso.1)
    
    install.packages("broom")
    library(broom)
    c <- tidy(coef(cv.lasso.1, s="lambda.min"))
    write.csv(c, file = "results") 
    
    predict.1.2 <- predict(cv.lasso.1, newx=x.2, type = "response", s = 
    "lambda.min")
    cor.test(x=c(predict.1.2), y=c(y.2))