首页 文章

多元线性回归处理NA

提问于
浏览
0

我是统计世界的新手,所以一些简单的建议将被承认......

我在R中有一个数据框

Ganeeshan

Year  General  OBC     SC    ST    VI   VacancySC VacancyGen VacancyOBC Banks Participated  VacancyST VacancyHI
1 2016    52.5  52.5  41.75  31.50  37.5      1338       4500       2319                 20       665       154
2 2015    76.0  76.0  50.00  47.75  36.0      1965       6146       3454                 23      1050       270
3 2014    82.0  80.0  70.00  56.00  38.0      2496       8212       4482                 23      1531       458
4 2013    61.0  60.0  50.00  26.00  27.0      3208      10846       5799                 21      1827       458
5 2012   135.0 135.0 127.00 106.00 127.0      3409      11058       6062                 21      1886       436

   VacancyOC VacancyVI
1       113       102
2       358       242
3       323       321
4       208       390
5       257       345

并且想要构建一个线性模型,将因变量作为“常规”,我使用以下命令

GaneeshanModel1 <- lm(General ~ ., data = Ganeeshan)

我得到“NA”而不是模型摘要中的值

呼叫:

lm(formula = General ~ ., data = Ganeeshan)

残差:所有5个残差均为0:无剩余自由度!

系数:(9由于奇点而未定义)

Estimate Std. Error t value Pr(>|t|)
(Intercept)          6566.6562         NA      NA       NA
Year                   -3.2497         NA      NA       NA
OBC                     0.5175         NA      NA       NA
SC                     -0.2167         NA      NA       NA
ST                      0.6078         NA      NA       NA
VI                          NA         NA      NA       NA
VacancySC                   NA         NA      NA       NA
VacancyGen                  NA         NA      NA       NA
VacancyOBC                  NA         NA      NA       NA
`Banks Participated`        NA         NA      NA       NA
VacancyST                   NA         NA      NA       NA
VacancyHI                   NA         NA      NA       NA
VacancyOC                   NA         NA      NA       NA
VacancyVI                   NA         NA      NA       NA

为什么我这里没有得到任何数据

1 回答

  • 0

    如果您不首先正确执行数据预处理,则会发生这种情况 . 您的“银行”列似乎是空的(NaN),您应该考虑如何处理它(我不确定这是整个文件还是“银行”列中还有其他非空值) . 通常,在开始使用数据之前,需要使用一些数值替换列中的NaN(空)值(通常是列的平均值或中值) . 在R中,对于您的列'Banks'(如果它有其他非空值),例如你可以这样做:

    dataset$Banks = ifelse(is.na(dataset$Banks),
                     ave(dataset$Banks, FUN = function(x) mean(x, na.rm = TRUE)),
                     dataset$Banks)
    

    否则,根据您的数据集,如果您的某些值由句点(或任何其他非数字值)表示,则可以将csv导入为

    dataset = read.csv("data.csv", header = TRUE, c(" ", ".", "NA"))
    

    将'period'和'empty'值更改为NaN(NA),然后使用上面的行将NA(NaN)替换为mean / median / something .

相关问题