2016-11-23 2 views
1

モデルを使用して予測を行うと問題が発生します.Rはこのメッセージを表示しますWarning message prediction from a rank-deficient fit may be misleading、どうすれば解決できますか?私のモデルは正しいと思うのは、失敗した予測で、理由はわかりません。Rの線形モデルで、「ランク不足のフィットを解く方法は誤解を招く可能性があります。

ここでは、私がやっている何歩一歩とモデルの概要を見ることができます:あなたのサブカテゴリレベルの

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 
+0

したがって、お互いに100%の相関関係を持つフィールド、または単一の値を持つフィールドを探す必要があります。あなたはもっと "理論"を見つけることができます - http://stats.stackexchange.com/questions/35071/what-is-rank-deficiency-and-how-to-deal-with-it – Bulat

+0

'tables'と' telephoneAndCommunication'行をトレーニングサンプルに追加します。 –

答えて

2

二つは、それらに関連する係数を抑えていました。これは、価格と出荷の組み合わせと他のカテゴリとサブカテゴリレベルによって100%予測できることを意味します。これは、Rのマニュアルでは「エイリアス」と呼ばれています。警告は重要ではないかもしれませんが、@ ZheyuanLiと同意しますが、おそらくそれは良性であると同意します。 R回帰関数は、一般に、いずれかの変数に欠損値がある場合に行全体を削除する方法で動作するため、この特定の警告は欠損値に起因するとは考えられません。また、2つの変数の間に100%の相関があるという理論はありそうもありません。あなたはこれを引き起こす可能性がある組み合わせを表示検索したい場合は、私は

with(dataClean , table(category, SubCategory)) 

で始まることをお勧め私は1個のサブカテゴリのカテゴリ行の1つまたは複数であるにあなたが見つけると予測します。

関連する問題