我正试图建立一个以反应为诊断的逻辑回归模型(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
值。
你可以通过来修复这个错误
- 或者从数据集中完全删除X,在将其交给
glm
之前设置Cancer$X <- NULL
,并在公式中保留X
(glm(diagnosis~.-id, data = Cancer, family = binomial)
( - 或者通过将
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)
。
就我而言,这仍然留下了一些警告,但我认为这些警告来自数据或您的功能选择。它清除阻塞错误:(