R代码:模型错误.矩阵.默认值(mt,mf,contrasts):变量1没有级别



我正试图建立一个以反应为诊断的逻辑回归模型(2因素变量:B,M(。我在构建逻辑回归模型时出错:

Error in model.matrix.default(mt, mf, contrasts) : 
variable 1 has no levels

我不知道如何解决这个问题。

R代码:

Cancer <- read.csv("Breast_Cancer.csv")

## Logistic Regression Model
lm.fit <- glm(diagnosis~.-id-X, data = Cancer, family = binomial)
summary(lm.fit)

数据集引用:https://www.kaggle.com/uciml/breast-cancer-wisconsin-data

您的问题与此处在randomForest分类器上报告的问题类似
显然,glm会检查数据中的变量并抛出错误,因为X只包含NA值。

你可以通过来修复这个错误

  1. 或者从数据集中完全删除X,在将其交给glm之前设置Cancer$X <- NULL,并在公式中保留X(glm(diagnosis~.-id, data = Cancer, family = binomial)(
  2. 或者通过将na.action = na.pass添加到glm调用(这将指示基本上忽略NA警告(,但仍在公式本身中排除X(glm(diagnosis~.-id-X, data = Cancer, family = binomial, na.action = na.pass)(

但是,请注意,您仍然必须确保以glm可理解的形式提供diagnosis变量。含义:数值为0和1的数值矢量、逻辑矢量或因子矢量

"对于二项式和拟二项式家族,响应也可以指定为因子(当第一级表示失败和所有其他成功时("-来自glm-doc

只需定义Cancer$diagnosis <- as.factor(Cancer$diagnosis)

就我而言,这仍然留下了一些警告,但我认为这些警告来自数据或您的功能选择。它清除阻塞错误:(

最新更新