R'de (veya genel olarak) regresyon katsayılarını belirli bir işaret olmaya zorlamak mümkün müdür?


10

Bazı gerçek dünya verileri ile çalışıyorum ve regresyon modelleri bazı mantıksız sonuçlar veriyor. Normalde istatistiklere güvenirim ama gerçekte bunlardan bazıları doğru olamaz. Gördüğüm temel sorun, bir değişkendeki artışın, gerçekte, negatif olarak ilişkilendirilmeleri gerektiğinde, yanıtta bir artışa neden olmasıdır.

Regresyon katsayılarının her biri için belirli bir işareti zorlamanın bir yolu var mı? Bunu yapmak için herhangi bir R kodu da takdir edilecektir.

Her türlü yardım için teşekkürler!




Bu bağlantı r-bloggers.com/positive-coefficient-regression-in-r Bence JRW'nin R-kare değerleri hakkındaki sorusunu cevaplıyor. Daha önce de açıklandığı gibi, pozitif katsayı değerlerini zorlamadan önce dikkat edilmelidir.
Esme_

Yanıtlar:


11
  1. marjinal korelasyon ile kısmi korelasyon (diğer değişkenlere bağlı korelasyon) arasındaki farkı göz önünde bulundurun. Meşru olarak farklı işaretlere sahip olabilirler.

    Bu aslında bir çoklu regresyondaki regresyon katsayısı pozitif iken negatif olabilir. Bu iki şeyde mutlaka bir çelişki yoktur. Ayrıca , biraz ilişkili olan Simpson'ın paradoksuna (özellikle diyagrama) bakınız. Genel olarak, bir regresyon katsayısının sadece marjinal korelasyon hakkındaki bir argümana dayanarak bir işaretten olması gerektiğini çıkaramazsınız.corr(Y,Xben)

  2. Evet, regresyon katsayılarını veya * olarak sınırlamak kesinlikle mümkündür . Bunu yapmanın birkaç yolu vardır; bunlardan bazıları R'de, örneğin, yoluyla kolayca yapılabilir . Ayrıca bir dizi R paketinden ve diğer olası yaklaşımlardan bahseden bu sorunun cevaplarına bakınız .000nnls

    Ancak, 1'deki noktaları aceleyle görmezden gelmeye karşı uyarıyorum.

    * (karşılık gelen değişkeni reddederek pozitif olmayan yapmak için negatif olmayan programları kullanabilirsiniz)


10

Böyle bir yol olabilir ama koşullarınızda tavsiye edilmediğini söyleyebilirim .

İmkansız olan bir sonucunuz varsa:

1) Verilerinizle ilgili bir sorun var 2) "İmkansız" tanımınızla ilgili bir sorun var veya 3) Yanlış yöntemi kullanıyorsunuz

İlk olarak, verileri kontrol edin. İkinci olarak, kodu kontrol edin. (Veya başkalarından kontrol etmelerini isteyin). Her ikisi de iyiyse, belki de beklenmedik bir şey oluyor.

Neyse ki, bir basit "imkansızlık" var - iki değişken demek olamaz pozitif korelasyon. Yani, bir dağılım grafiği yapın ve daha pürüzsüz bir ekleyin ve görün. Tek bir aykırı değer buna neden olabilir; ya da doğrusal olmayan bir ilişki olabilir. Veya başka bir şey.

Ancak, şanslıysanız, yeni bir şey buldunuz. En sevdiğim profesör "Şaşırmazsan, hiçbir şey öğrenmedin" derdi.


(Hem Peter hem de Glen'e +1) @JRW - Tabelayı düzeltirseniz, kitlenize "elde ettiğiniz" katsayıyı ve güven aralığını açıklamaya çalıştığınızda duvarda bir sinek olmak isterim. Dahası, meşru bir şekilde sorabilirler: Başkalarının işaretini ve / veya aralığını düzelttiniz mi? Değilse, neden olmasın?
rolando2

6

Özel sorunuza cevap vermek için , katsayılar üzerinde negatif olmayan kısıtlamalarla en küçük kareler regresyonunu yapan nnls paketini deneyebilirsiniz . Uygun tahmin edicilerin işaretlerini değiştirerek istediğiniz işaretleri almak için kullanabilirsiniz.

Bu arada, burada pozitif korelasyonlara ve negatif regresyon katsayılarına sahip olmanın nasıl mümkün olduğunu göstermek için bir veri kümesi oluşturmanın çok basit bir yolu.

> 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  

Bu nnls paketi ile biraz oynadım. Düzeltilmiş bir R kare değeri (veya eşdeğeri bir şey) almanın herhangi bir yolu var mı, yoksa bunu bir şekilde kendim hesaplamaya çalışmam gerekir mi?
JRW
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.