R 代码:model.matrix.default(mt, mf, contrasts) 中的错误:变量 1 没有级别
R code: Error in model.matrix.default(mt, mf, contrasts) : Variable 1 has no levels
我正在尝试建立一个逻辑回归模型,并将响应作为诊断(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
您的问题类似于 here 在 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 的数值向量、逻辑向量或因子向量
"For binomial and quasibinomial families the response can also be specified as a factor (when the first level denotes failure and all others success)" - from the glm
-doc
只需定义Cancer$diagnosis <- as.factor(Cancer$diagnosis)
.
就我而言,这仍然会留下一些警告,但我认为这些警告来自数据或您的功能选择。它清除阻塞错误:)
我正在尝试建立一个逻辑回归模型,并将响应作为诊断(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
您的问题类似于 here 在 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 的数值向量、逻辑向量或因子向量
"For binomial and quasibinomial families the response can also be specified as a factor (when the first level denotes failure and all others success)" - from the
glm
-doc
只需定义Cancer$diagnosis <- as.factor(Cancer$diagnosis)
.
就我而言,这仍然会留下一些警告,但我认为这些警告来自数据或您的功能选择。它清除阻塞错误:)