当我使用我的模型进行一些预测时遇到问题,R 显示此消息Warning message prediction from a rank-deficient fit may be misleading,我该如何解决?我认为我的模型是正确的是预测失败,我不知道为什么。
在这里你可以一步一步看到我在做什么以及模型的总结:
myModel <- lm(margin~.,data = dataClean[train,c(target,numeric,categoric)])
Call:
lm(formula = margin ~ ., data = dataClean[train, c(target, numeric, categoric)])
Residuals:
Min 1Q Median 3Q Max
-0.220407 -0.035272 -0.003415 0.028227 0.276727
Coefficients: (2 not defined because of singularities)
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6.061e-01 2.260e-02 26.817 < 2e-16 ***
price 1.042e-05 8.970e-06 1.162 0.245610
shipping 1.355e-03 2.741e-04 4.943 9.25e-07 ***
categoryofficeSupplies -7.721e-02 2.295e-02 -3.364 0.000802 ***
categorytechnology -3.993e-02 2.325e-02 -1.717 0.086249 .
subCategorybindersAndAccessories -1.650e-01 1.421e-02 -11.612 < 2e-16 ***
subCategorybookcases 3.337e-04 2.328e-02 0.014 0.988565
subCategorychairsChairmats -3.104e-02 2.106e-02 -1.474 0.140831
subCategorycomputerPeripherals 1.356e-02 1.293e-02 1.049 0.294604
subCategorycopiersAndFax -1.943e-01 2.944e-02 -6.598 7.27e-11 ***
subCategoryenvelopes -1.648e-01 2.045e-02 -8.057 2.62e-15 ***
subCategorylabels -1.534e-01 1.984e-02 -7.730 3.00e-14 ***
subCategoryofficeFurnishings -8.827e-02 2.220e-02 -3.976 7.61e-05 ***
subCategoryofficeMachines -1.521e-01 1.639e-02 -9.281 < 2e-16 ***
subCategorypaper -1.624e-01 1.363e-02 -11.909 < 2e-16 ***
subCategorypensArtSupplies -8.484e-04 1.524e-02 -0.056 0.955623
subCategoryrubberBands 3.174e-02 2.245e-02 1.414 0.157854
subCategoryscissorsRulersTrimmers 1.092e-01 2.327e-02 4.693 3.13e-06 ***
subCategorystorageOrganization 1.219e-01 1.575e-02 7.739 2.82e-14 ***
subCategorytables NA NA NA NA
subCategorytelephoneAndComunication NA NA NA NA
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.08045 on 858 degrees of freedom
Multiple R-squared: 0.6512, Adjusted R-squared: 0.6439
F-statistic: 88.98 on 18 and 858 DF, p-value: < 2.2e-16
estimateModel <- predict(myModel, type="response", newdata=dataClean[test, c(numeric,categoric,target)])
Warning message:
In predict.lm(myModel, type = "response", newdata = dataClean[test, :
prediction from a rank-deficient fit may be misleading
Run Code Online (Sandbox Code Playgroud)
您的两个子类别级别的相关系数被抑制。这意味着它们中的每一个都可以通过价格和运费以及其他类别和子类别级别的某种组合来 100% 预测。这在 R 文档中称为“别名”。警告可能重要也可能不重要,尽管同意@ZheyuanLi 的观点,这可能是良性的。我不认为这个特殊的警告可能是由于缺失值造成的,因为当任何一个变量有缺失值时,R 回归函数通常以删除整行的方式运行。两个变量之间存在 100% 相关性的理论也不太可能。如果您想找到可能导致这种情况的显示组合,我建议从
with( dataClean , table( category, SubCategory) )
Run Code Online (Sandbox Code Playgroud)
我预测您会在一个 SubCategory 上发现一个或多个类别行。