J'ai un problème quand j'utilise mon modèle pour faire une prédiction, R montre ce message Warning message prediction from a rank-deficient fit may be misleading
, comment puis-je le résoudre? Je pense que mon modèle est correct, c'est la prédiction qui échoue et je ne sais pas pourquoi.Comment résoudre "l'ajustement déficient de rang peut être une erreur trompeuse" sur mon modèle linéaire dans R?
Ici vous pouvez voir étape par étape ce que je fais et le résumé du modèle:
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
Vous devez donc rechercher les champs qui ont une corrélation de 100% entre eux ou un champ qui a une seule valeur. Vous pouvez trouver plus de «théorie» ici - http://stats.stackexchange.com/questions/35071/what-is-rank-deficiency-and-how-to-deal-with-it – Bulat
Vous êtes probablement manquant tous les Les lignes 'tables' et' telephoneAndCommunication' dans votre exemple d'apprentissage. –