我在R中使用caret
包来执行Ridge Logistic Regression。 现在我能够找到每个变量的系数。
问题是:如何使用岭逻辑回归知道每个变量产生的系数标准误差?
这是我拥有的示例代码:-
Ridge1 <- train(Group ~., data = train, method = 'glmnet',
trControl = trainControl("cv", number = 10),
tuneGrid = expand.grid(alpha = 0,
lambda = lambda),
family="binomial")
岭逻辑回归系数
coef(Ridge1$finalModel, Ridge1$bestTune$lambda)
如何获得逻辑回归模型中的结果(即:标准误差,wald统计量,p值等?
您无法从岭或 glmnet 回归中获得 p 值和置信区间,因为当存在惩罚项时,很难估计估计器的分布。R包hmi出版物的第一部分涉及这一点,您可以查看诸如此和该的帖子
我们可以尝试下面的方法,例如从插入符号中获取最佳 lambda 并将其用于另一个包中hmi
来估计置信区间和 p 值,但我会谨慎解释这些,它们与自定义逻辑 glm 非常不同。
library(caret)
library(mlbench)
data(PimaIndiansDiabetes)
X = as.matrix(PimaIndiansDiabetes[,-ncol(PimaIndiansDiabetes)])
y = as.numeric(PimaIndiansDiabetes$diabetes)-1
lambda = 10^seq(-5,4,length.out=25)
Ridge1 <- train(x=X,y=factor(y), method = 'glmnet',family="binomial",
trControl = trainControl("cv", number = 10),
tuneGrid = expand.grid(alpha = 0,
lambda = lambda))
bestLambda = Ridge1$bestTune$lambda
使用 hdi,但请注意,系数不会与插入符号或 glmnet 获得的系数完全相同:
library(hdi)
fit = ridge.proj(X,y,family="binomial",lambda=bestLambda)
cbind(fit$bhat,fit$se,fit$pval)
[,1] [,2] [,3]
pregnant 0.1137868935 0.0314432291 2.959673e-04
glucose 0.0329008177 0.0035806920 3.987411e-20
pressure -0.0122503030 0.0051224313 1.677961e-02
triceps 0.0009404808 0.0067935741 8.898952e-01
insulin -0.0012293122 0.0008902878 1.673395e-01
mass 0.0787408742 0.0145166392 5.822097e-08
pedigree 0.9120151630 0.2927090989 1.834633e-03
age 0.0116844697 0.0092017927 2.041546e-01