修正方法: 不適切なランク調整を予測すると誤解を招く可能性があります
R で発生する可能性のある一般的な警告は次のとおりです。
Warning message:
In predict.lm(model, df):
prediction from a rank-deficient fit may be misleading
この警告は、次の 2 つの理由で発生する可能性があります。
理由 1 : 2 つの予測変数は完全に相関しています。
理由 2 : データセット内の観測値よりも多くのモデル パラメーターが存在します。
次の例は、各問題が実際にどのように発生するかを示しています。
理由 1: 2 つの予測変数が完全に相関している
次の重線形回帰モデルを R に当てはめ、それを使用して予測を行ってみるとします。
#create data frame
df <- data. frame (x1=c(1, 2, 3, 4),
x2=c(2, 4, 6, 8),
y=c(6, 10, 19, 26))
#fit multiple linear regression model
model <- lm(y~x1+x2, data=df)
#use model to make predictions
predict(model, df)
1 2 3 4
4.9 11.8 18.7 25.6
Warning message:
In predict.lm(model, df):
prediction from a rank-deficient fit may be misleading
予測子変数 x1 と x2 は完全に相関しているため、警告メッセージが表示されます。
x2 の値は単に x1 の値を 2 倍したものに等しいことに注意してください。これは完全な多重共線性の例です。
これは、x1 と x2 が回帰モデル内で固有または独立した情報を提供しないことを意味し、モデルのフィッティングと解釈の際に問題が発生します。
この問題を解決する最も簡単な方法は、モデルに両方の予測子変数を含めるのは冗長であるため、モデルから予測子変数の 1 つを単純に削除することです。
理由 #2: 観測値よりもモデルのパラメーターの方が多い
次の重線形回帰モデルを R に当てはめ、それを使用して予測を行ってみるとします。
#create data frame
df <- data. frame (x1=c(1, 2, 3, 4),
x2=c(3, 3, 8, 12),
x3=c(4, 6, 3, 11),
y=c(6, 10, 19, 26))
#fit multiple linear regression model
model <- lm(y~x1*x2*x3, data=df)
#use model to make predictions
predict(model, df)
1 2 3 4
6 10 19 26
Warning message:
In predict.lm(model, df):
prediction from a rank-deficient fit may be misleading
合計 7 つのモデル係数を使用して回帰モデルを近似しようとしたため、警告メッセージが表示されます。
- ×1
- ×2
- ×3
- x1*x2
- ×1*3
- x2*x3
- x1*x2*x3
ただし、データセットには合計 4 つの観測値しかありません。
モデル パラメーターの数はデータセット内の観測値の数よりも多いため、これを高次元データと呼びます。
高次元データの場合、モデルをトレーニングするための十分な観測値がないため、予測変数と応答変数の間の関係を記述できるモデルを見つけることは不可能になります。
この問題を解決する最も簡単な方法は、データセットの観測値をさらに収集するか、推定係数の少ない単純なモデルを使用することです。
追加リソース
次のチュートリアルでは、R の他の一般的なエラーを処理する方法について説明します。
対処方法: glm.fit: アルゴリズムが収束しませんでした
扱い方: glm.fit: 数値的に調整された確率 0 または 1 が発生する