在R(或一般而言)中是否可能迫使回归系数成为某个符号?


10

我正在处理一些现实世界的数据,回归模型产生了一些违反直觉的结果。通常,我相信统计数据,但实际上其中一些事情是不正确的。我看到的主要问题是,实际上必须将它们负相关时,一个变量的增加会引起响应的增加。

有没有一种方法可以为每个回归系数强制指定符号?任何这样做的R代码也将不胜感激。

感谢您提供的所有帮助!



1
可能与此处

我相信此链接r-bloggers.com/positive-coefficient-regression-in-r可以回答@JRW关于R平方值的问题。如前所述,在强制使用正系数值之前应格外小心。
Esme_

Answers:


11
  1. 当心边际相关和偏相关之间的区别(其他变量为条件的相关)。它们可能合法地具有不同的标志。

    也就是说实际上可能为负,而多元回归中的回归系数为正。这两件事不一定有矛盾。另请参见辛普森悖论,它有点相关(尤其是图表)。通常,您不能仅基于有关边际相关性的论据来推断回归系数必须为一个符号。更正ÿX一世

  2. 是的,当然可以将回归系数限制为或 *。有几种方法可以做到这一点;其中一些可以在R中轻松完成,例如via 。另请参阅此问题的答案,其中提到了许多R软件包和其他可能的方法。00nnls

    但是,我告诫您不要仓促忽略1.中的要点,因为其中许多很容易实现。

    *(您可以使用通过对相应变量取反来执行非负运算的程序)


10

有可能是这样,但我要说的是,这是不是在您的情况最好。

如果您无法获得结果,则:

1)您的数据有问题2)您的“不可能”定义存在问题或3)您使用的方法错误

首先,检查数据。其次,检查代码。(或要求其他人进行检查)。如果两者都很好,那么也许正在发生意外。

对您来说幸运的是,您有一个简单的“不可能”-您说两个变量不能正相关。因此,绘制散点图并添加更平滑的效果并查看。单个异常值可能会导致这种情况;或可能是非线性关系。或者是其他东西。

但是,如果幸运的话,您会发现一些新东西。正如我最喜欢的教授曾经说过的那样:“如果您不感到惊讶,那么您还没有学到任何东西”。


(对Peter和Glen均为+1)@JRW-如果您确实确定了标志,当您尝试向听众解释您“获得的”系数及其置信区间时,我想像是在墙上飞。此外,他们可能会合理地问:您是否固定了其他人的标志和/或范围?如果没有,为什么不呢?
rolando2 2014年

6

要回答您的特定问题,您可以尝试使用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  

我只是用这个nnls包戏弄了arround。有什么方法可以获取调整后的R平方值(或等效值),还是我必须尝试自己计算一下?
JRW
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.