我正在处理一些现实世界的数据,回归模型产生了一些违反直觉的结果。通常,我相信统计数据,但实际上其中一些事情是不正确的。我看到的主要问题是,实际上必须将它们负相关时,一个变量的增加会引起响应的增加。
有没有一种方法可以为每个回归系数强制指定符号?任何这样做的R代码也将不胜感激。
感谢您提供的所有帮助!
我正在处理一些现实世界的数据,回归模型产生了一些违反直觉的结果。通常,我相信统计数据,但实际上其中一些事情是不正确的。我看到的主要问题是,实际上必须将它们负相关时,一个变量的增加会引起响应的增加。
有没有一种方法可以为每个回归系数强制指定符号?任何这样做的R代码也将不胜感激。
感谢您提供的所有帮助!
Answers:
有可能是这样,但我要说的是,这是不是在您的情况最好。
如果您无法获得结果,则:
1)您的数据有问题2)您的“不可能”定义存在问题或3)您使用的方法错误
首先,检查数据。其次,检查代码。(或要求其他人进行检查)。如果两者都很好,那么也许正在发生意外。
对您来说幸运的是,您有一个简单的“不可能”-您说两个变量不能正相关。因此,绘制散点图并添加更平滑的效果并查看。单个异常值可能会导致这种情况;或可能是非线性关系。或者是其他东西。
但是,如果幸运的话,您会发现一些新东西。正如我最喜欢的教授曾经说过的那样:“如果您不感到惊讶,那么您还没有学到任何东西”。
要回答您的特定问题,您可以尝试使用nnls软件包,该软件包使用系数的非负约束进行最小二乘回归。您可以通过更改适当的预测变量的符号来使用它来获取所需的符号。
顺便说一下,这是创建数据集的一种非常简单的方法,以演示如何可能具有正相关性和负回归系数。
> n <- rnorm(200)
> x <- rnorm(200)
> d <- data.frame(x1 = x+n, x2= 2*x+n, y=x)
> cor(d)
x1 x2 y
x1 1.0000000 0.9474537 0.7260542
x2 0.9474537 1.0000000 0.9078732
y 0.7260542 0.9078732 1.0000000
> plot(d)
> lm(y~x1+x2-1, d)
Call:
lm(formula = y ~ x1 + x2 - 1, data = d)
Coefficients:
x1 x2
-1 1