【问题标题】:NAs occuring in the output of logistic regression (using multinom) in RR中逻辑回归(使用多项式)的输出中出现的NA
【发布时间】:2013-11-14 07:24:09
【问题描述】:

我正在尝试使用 nnet 包中的 multinom() 对使用 R 的以下数据执行逻辑回归:
Train Data
Test Data

数据说明:

train 和 test 文件各有 10000 行数据和 144 个变量,其中最后一列是“Predict”,也就是测试数据中应该预测的列。由于 predict 仅包含两个值 0 和 1(二进制),我开始使用 multinom() 将训练数据拟合到逻辑回归模型。大多数行是连续的数值,而少数字段包含名称字段,例如工作日名称(“Sunday”,“Monday”,...),这些字段将被视为因素。

这是使用的以下代码:

train_data <- read.csv("train_data.csv")
test_data <- read.csv("test_data.csv")
library(nnet)
my_multinom <- multinom(formula= as.factor(Predict) ~ ., data= train_data)
predictions <- predict(my_multinom, test_data[,1:143])

输出是:

> summary(predictions)
   0    1   NA's 
 130   52   9818 

其中,train_dataPredict 列中没有NA's

> summary(as.factor(train_data$Predict))
   0    1 
9734  266 

我想知道为什么会出现如此大量的NA's(超过98%)以及如何进一步进行以避免这些NA's

【问题讨论】:

    标签: r logistic-regression


    【解决方案1】:

    查看您的测试数据。预测为NA 的每一行都包含一个NA 值:

    all(apply(sapply(test_data[is.na(predictions),1:143], is.na),1,any))
    #[1] TRUE
    

    其他行不包含任何NA 值:

    any(apply(sapply(test_data[!is.na(predictions),1:143], is.na),1,any))
    #[1] FALSE
    

    【讨论】:

    • 谢谢@Roland。那行得通。即使输入行中有几个NA,是否有任何逻辑回归函数可以预测输出?
    • 没有插补是不可能的。
    猜你喜欢
    • 2021-05-02
    • 2011-03-27
    • 2020-11-08
    • 1970-01-01
    • 2014-06-26
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    相关资源
    最近更新 更多