繁体   English   中英

如何使用插入符包 train() 和 varImp() 在 R 中显示逻辑回归的系数值和变量重要性

[英]How to show the coefficient values and variable importance for logistic regression in R using caret package train() and varImp()

我们正在进行探索性逻辑回归,并试图确定变量在预测结果中的重要性。 我们正在使用 caret 包中的 train() 和 varImp() 函数。 最终,我们想创建一个包含 3 列的表/数据框输出:变量名称、重要性和系数。 像这样的输出:

所需的输出格式。

1个

下面是一些示例代码来说明:

library(caret)

# Create a sample dataframe

my_DV <- c(0, 1, 0, 1, 1)
IV1 <- c(10, 40, 15, 35, 38)
IV2 <- c(1, 0, 1, 0, 1)
IV3 <- c(5, 4, 3, 2, 1)
IV4 <- c(5, 7, 3, 8, 9)
IV5 <- c(1, 2, 1, 2, 1)

df <- data.frame(my_DV, IV1, IV2, IV3, IV4, IV5)
df$my_DV <- as.factor(df$my_DV)
df$IV1 <- as.numeric(df$IV1)
df$IV2 <- as.factor(df$IV2)
df$IV3 <- as.numeric(df$IV3)
df$IV4 <- as.numeric(df$IV4)
df$IV5 <- as.factor(df$IV5)

# train model/perform logistic regression
model_one <- train(form = my_DV ~ ., data = df, trControl = trainControl(method = "cv", number = 5), 
    method = "glm", family = "binomial", na.action=na.omit)
summary(model_one)

# get the variable importance
imp <- varImp(model_one)
imp

我想获取imp中的重要性值并将它们与model_one中的系数合并,但我对 R 还很陌生,我不知道该怎么做。

非常感谢任何建议!

这是获得所需输出的多种方法之一:

您将模型的摘要分配给一个对象,然后使用coef()函数提取系数,然后将其与变量名称和相应的重要性绑定到一个数据框中。 然后,您可以使用order()根据重要性值对行进行排序。

sum_mod <- summary(model_one)
dat <- data.frame(VariableName = rownames(imp$importance), 
    Importance = imp$importance, 
    Coefficient = coef(sum_mod)[rownames(imp$importance),][,1], 
    row.names = NULL) 
dat <- dat[order(dat$Overall, decreasing = TRUE),]

结果:

  VariableName   Overall Coefficient
1          IV1 100.00000   1.0999732
4          IV4  74.48458   3.6665775
2         IV21  34.43803  -7.8831404
3          IV3   0.00000  -0.9166444

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM