如何解决:预测不良的排名调整可能会产生误导
您在 R 中可能遇到的常见警告是:
Warning message:
In predict.lm(model, df):
prediction from a rank-deficient fit may be misleading
出现此警告的原因有两个:
原因 1 :两个预测变量完全相关。
原因 2 :您的模型参数多于数据集中的观测值。
以下示例显示了每个问题在实践中可能如何出现。
原因#1:两个预测变量完全相关
假设我们将以下多元线性回归模型拟合到 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 在回归模型中不提供唯一或独立的信息,这会在拟合和解释模型时引起问题。
解决此问题的最简单方法是简单地从模型中删除一个预测变量,因为模型中同时包含两个预测变量是多余的。
原因#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
我们收到一条警告消息,因为我们尝试拟合具有七个总模型系数的回归模型:
- x1
- x2
- x3
- x1*x2
- x1*3
- x2*x3
- x1*x2*x3
然而,我们在数据集中总共只有四个观察值。
由于模型参数的数量大于数据集中观测值的数量,我们将其称为高维数据。
对于高维数据,不可能找到一个可以描述预测变量和响应变量之间关系的模型,因为我们没有足够的观察数据来训练模型。
解决这个问题的最简单方法是为我们的数据集收集更多观测值或使用具有更少系数的更简单模型来估计。
其他资源
以下教程解释了如何处理 R 中的其他常见错误: