Apakah mungkin dalam R (atau secara umum) untuk memaksa koefisien regresi menjadi tanda tertentu?


10

Saya bekerja dengan beberapa data dunia nyata dan model regresi menghasilkan beberapa hasil yang berlawanan dengan intuisi. Biasanya saya mempercayai statistik tetapi pada kenyataannya beberapa hal ini tidak benar. Masalah utama yang saya lihat adalah bahwa peningkatan dalam satu variabel menyebabkan peningkatan respons ketika, pada kenyataannya, mereka harus berkorelasi negatif.

Apakah ada cara untuk memaksa tanda tertentu untuk masing-masing koefisien regresi? Kode R apa pun untuk melakukan ini akan dihargai juga.

Terima kasih atas bantuan Anda!



1
Mungkin terkait di sini

Tautan ini r-bloggers.com/positive-coefisien-regress-in-r Saya percaya menjawab pertanyaan JRW tentang nilai R-squared. Seperti yang sudah dikomentari, kehati-hatian harus diambil sebelum memaksakan nilai koefisien positif.
Esme_

Jawaban:


11
  1. Waspadalah perbedaan antara korelasi marginal dan korelasi parsial (korelasi bersyarat pada variabel lain). Mereka mungkin memiliki tanda yang berbeda.

    Yaitu mungkin sebenarnya negatif sedangkan koefisien regresi dalam regresi berganda adalah positif. Belum tentu ada kontradiksi dalam kedua hal itu. Lihat juga paradoks Simpson , yang agak terkait (terutama diagram). Secara umum Anda tidak dapat menyimpulkan bahwa koefisien regresi harus dari satu tanda hanya berdasarkan argumen tentang korelasi marjinal.corr(Y,Xi)

  2. Ya, tentu saja mungkin untuk membatasi koefisien regresi menjadi atau *. Ada beberapa cara untuk melakukannya; beberapa di antaranya dapat dilakukan dengan cukup mudah di R, seperti via . Lihat juga jawaban untuk pertanyaan ini yang menyebutkan sejumlah paket R dan pendekatan lain yang mungkin.000nnls

    Namun saya memperingatkan Anda agar tidak dengan tergesa-gesa mengabaikan poin dalam 1. hanya karena banyak dari mereka yang mudah diimplementasikan.

    * (Anda dapat menggunakan program yang non-negatif untuk melakukan non-positif dengan meniadakan variabel yang sesuai)


10

Mungkin ada cara seperti itu tetapi saya akan mengatakan bahwa itu tidak dianjurkan dalam keadaan Anda.

Jika Anda memiliki hasil yang tidak mungkin:

1) Ada masalah dengan data Anda 2) Ada masalah dengan definisi Anda tentang "tidak mungkin" atau 3) Anda menggunakan metode yang salah

Pertama, periksa datanya. Kedua, periksa kodenya. (Atau minta orang lain untuk memeriksanya). Jika keduanya baik-baik saja maka mungkin sesuatu yang tidak terduga terjadi.

Untungnya bagi Anda, Anda memiliki "ketidakmungkinan" sederhana - Anda mengatakan dua variabel tidak dapat dikorelasikan secara positif. Jadi, buat plot pencar dan tambahkan lebih halus dan lihat. Pencilan tunggal dapat menyebabkan ini; atau mungkin hubungan nonlinear. Atau sesuatu yang lain.

Tetapi, jika Anda beruntung, Anda telah menemukan sesuatu yang baru. Seperti yang sering dikatakan oleh profesor favorit saya, "Jika Anda tidak terkejut, Anda belum belajar apa-apa".


(+1 untuk Peter dan Glen) @JRW - Jika Anda memperbaiki tanda, saya ingin menjadi lalat di dinding ketika Anda mencoba menjelaskan kepada audiens Anda koefisien yang "Anda peroleh," dan interval kepercayaannya. Selain itu, mereka mungkin secara sah bertanya, Apakah Anda memperbaiki tanda dan / atau jajaran orang lain? Jika tidak, mengapa tidak?
rolando2

6

Untuk menjawab pertanyaan spesifik Anda, Anda dapat mencoba paket nnls yang melakukan regresi kuadrat terkecil dengan kendala non-negatif pada koefisien. Anda dapat menggunakannya untuk mendapatkan tanda-tanda yang Anda inginkan dengan mengubah tanda-tanda prediksi yang sesuai.

Omong-omong, berikut adalah cara yang sangat sederhana untuk membuat dataset untuk menunjukkan bagaimana mungkin untuk memiliki korelasi positif dan koefisien regresi negatif.

> 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  

Saya hanya bermain-main dengan paket nnls ini sedikit. Apakah ada cara untuk mendapatkan nilai R-squared yang disesuaikan (atau sesuatu yang setara), atau apakah saya harus mencoba dan menghitungnya sendiri?
JRW
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.