Чи можна в R (або взагалі) змусити коефіцієнти регресії бути певною ознакою?


10

Я працюю з деякими реальними даними, і регресійні моделі дають певні протиінтуїтивні результати. Зазвичай я довіряю статистиці, але насправді деякі з цих речей не можуть бути правдивими. Основна проблема, яку я бачу, полягає в тому, що збільшення однієї змінної викликає посилення реакції, коли насправді вони мають негативно співвідноситись.

Чи є спосіб застосувати певний знак для кожного з коефіцієнтів регресії? Буде також вдячний будь-який код R для цього.

Дякуємо за будь-яку допомогу!



1
Може бути пов'язано тут

Це посилання r-bloggers.com/positive-coefficient-regression-in-r Я вважаю, що відповідає на запитання @ JRW щодо R-квадратних значень. Як уже зазначалося, слід бути обережним, перш ніж форсувати значення позитивних коефіцієнтів.
Esme_

Відповіді:


11
  1. остерігайтеся різниці між граничною кореляцією та частковою кореляцією (кореляція умовна для інших змінних). Вони законно можуть мати інший знак.

    Тобто насправді може бути негативним, тоді як коефіцієнт регресії у множинній регресії позитивний. У цих двох речах не обов'язково є суперечність. Дивіться також парадокс Сімпсона , який дещо пов'язаний (особливо схема). Загалом, ви не можете зробити висновок, що коефіцієнт регресії повинен бути одним знаком, лише на основі аргументу про граничну кореляцію.corr(Y,Xi)

  2. Так, безумовно, можливо обмежити коефіцієнти регресії або00nnls

    Однак я застерігаю вас від поспішного ігнорування пунктів у 1. тільки тому, що багато з них легко реалізуються.

    * (Ви можете використовувати програми, які роблять негативні, щоб робити негативні, відкидаючи відповідну змінну)


10

Можливо, такий спосіб є, але я б сказав, що це не доцільно у ваших обставинах.

Якщо у вас є неможливий результат:

1) Виникла проблема з вашими даними 2) Виникла проблема з вашим визначенням "неможливо" або 3) Ви використовуєте неправильний метод

Спочатку перевірте дані. По-друге, перевірте код. (Або попросіть інших перевірити це). Якщо обоє добре, то, можливо, відбувається щось несподіване.

На щастя для вас, у вас є проста "неможливість" - ви кажете, що дві змінні не можуть бути позитивно пов'язаними. Отже, зробіть розкидний сюжет і додайте більш гладкий і подивіться. Один випускник може спричинити це; або це може бути нелінійна залежність. Або щось інше.

Але, якщо вам пощастило, ви знайшли щось нове. Як казав мій улюблений професор, "якщо ти не здивований, ти нічого не навчився".


(+1 і Петру, і Глену) @JRW - Якщо ви все-таки виправите знак, я хотів би стати мухою на стіні, коли ви намагаєтесь пояснити своїй аудиторії коефіцієнт, який ви отримали, та його довірчий інтервал. Більше того, вони можуть законно запитати: Ви виправили знак та / або коло інших? Якщо ні, то чому б і ні?
rolando2

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. Чи є якийсь спосіб отримати скориговане значення R-квадрата (або щось еквівалентне), або мені доведеться якось самостійно спробувати обчислити його?
JRW
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.