R 套索分析(glmnet软件包)。我可以循环分析和结果提取吗?
我使用的是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[
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))