Mengubah variabel untuk regresi berganda dalam R


26

Saya mencoba melakukan regresi berganda R. Namun, variabel dependen saya memiliki plot berikut:

DV

Berikut adalah matriks sebar dengan semua variabel saya ( WARadalah variabel dependen):

SPLOM

Saya tahu bahwa saya perlu melakukan transformasi pada variabel ini (dan mungkin variabel independen?) Tetapi saya tidak yakin dengan transformasi yang tepat diperlukan. Bisakah seseorang mengarahkan saya ke arah yang benar? Saya senang memberikan informasi tambahan tentang hubungan antara variabel independen dan dependen.

Grafik diagnostik dari regresi saya terlihat sebagai berikut:

Plot diagnostik

EDIT

Setelah mentransformasikan variabel dependen dan independen menggunakan transformasi Yeo-Johnson, plot diagnostik terlihat seperti ini:

Setelah mentransformasikannya

Jika saya menggunakan GLM dengan tautan log, grafik diagnostiknya adalah:

GLM dengan tautan-log


3
Hai @ zglaa1 dan selamat datang. Mengapa Anda berpikir bahwa Anda harus mengubah variabel? Langkah pertama adalah mencocokkan regresi dengan varibales asli dan kemudian melihat kecocokan (residual dll). Residu seharusnya terdistribusi normal, bukan variabel. Mungkin Anda akan menemukan postingan ini menarik.
COOLSerdash

Terima kasih atas tautan dan sarannya. Saya telah menjalankan regresi saya dan saya tahu variabel-variabel perlu diubah berdasarkan plot berikut: i.imgur.com/rbmu14M.jpg Saya bisa melihat ketidakberpihakan dan kurangnya variabilitas yang konstan dalam residual. Juga, mereka tidak normal.
zgall1

@COOLSerdash Saya melihat tautannya. Saya memiliki latar belakang dasar dalam statistik sehingga saya memahami diskusi. Namun, masalah saya adalah bahwa saya memiliki pengalaman yang terbatas dengan benar-benar menerapkan teknik yang telah saya pelajari sehingga saya berjuang untuk mencari tahu apa yang sebenarnya perlu saya lakukan dengan data saya (baik dalam Excel atau R) untuk benar-benar melakukan transformasi yang diperlukan.
zgall1

Terima kasih untuk gambarnya. Anda benar dengan mengatakan bahwa kecocokan ini kurang optimal. Bisakah Anda membuat matriks sebar dengan DV dan IV dalam regresi? Ini bisa dilakukan Rdengan perintah di pairs(my.data, lower.panel = panel.smooth)mana my.datadataset Anda.
COOLSerdash

2
lmboxcox(my.lm.model)MASSλ

Jawaban:


30

Buku John Fox, An R pendamping untuk regresi terapan adalah sumber daya yang sangat baik pada pemodelan regresi terapan dengan R. Paket caryang saya gunakan dalam jawaban ini adalah paket yang menyertai. Buku ini juga memiliki situs web dengan bab-bab tambahan.


Mengubah respons (alias variabel dependen, hasil)

RlmboxCoxcarλfamily="yjPower"

boxCox(my.regression.model, family="yjPower", plotit = TRUE)

Ini menghasilkan plot seperti berikut:

Box-Cox lambdaplot

λλ

Untuk mengubah variabel dependen Anda sekarang, gunakan fungsi yjPowerdari carpaket:

depvar.transformed <- yjPower(my.dependent.variable, lambda)

lambdaλboxCox

Penting: Daripada hanya mentransformasi log variabel dependen, Anda harus mempertimbangkan untuk menyesuaikan GLM dengan log-link. Berikut adalah beberapa referensi yang memberikan informasi lebih lanjut: pertama , kedua , ketiga . Untuk melakukan ini R, gunakan glm:

glm.mod <- glm(y~x1+x2, family=gaussian(link="log"))

di mana yvariabel dependen Anda dan x1, x2dll. adalah variabel independen Anda.


Transformasi prediktor

Transformasi prediktor yang benar - benar positif dapat diperkirakan dengan kemungkinan maksimum setelah transformasi variabel dependen. Untuk melakukannya, gunakan fungsi boxTidwelldari carpaket (untuk kertas asli lihat di sini ). Gunakan seperti itu: boxTidwell(y~x1+x2, other.x=~x3+x4). Yang penting di sini adalah bahwa opsi other.xmenunjukkan syarat-syarat regresi yang tidak boleh diubah. Ini akan menjadi semua variabel kategori Anda. Fungsi menghasilkan output dari bentuk berikut:

boxTidwell(prestige ~ income + education, other.x=~ type + poly(women, 2), data=Prestige)

          Score Statistic   p-value MLE of lambda
income          -4.482406 0.0000074    -0.3476283
education        0.216991 0.8282154     1.2538274

incomeλincomependapatannew=1/pendapatanHaild

Posting lain yang sangat menarik di situs tentang transformasi variabel independen adalah yang ini .


Kerugian transformasi

1/yλλ


Pemodelan hubungan nonlinear

Dua metode yang cukup fleksibel agar sesuai dengan hubungan nonlinear adalah polinomial pecahan dan splines . Ketiga makalah ini menawarkan pengantar yang sangat baik untuk kedua metode: Pertama , kedua dan ketiga . Ada juga seluruh buku tentang polinomial pecahan dan R. The R paketmfp alat multivariabel polinomial pecahan. Presentasi ini mungkin informatif mengenai polinomial pecahan. Untuk menyesuaikan splines, Anda dapat menggunakan fungsi gam(model aditif umum, lihat di sini untuk pengenalan yang sangat baik dengan R) dari paketmgcv atau fungsins(natural cubic splines) dan bs(cubic B-splines) dari paket splines(lihat di sini untuk contoh penggunaan fungsi-fungsi ini). Menggunakan gamAnda dapat menentukan prediktor mana yang ingin Anda gunakan menggunakan splines menggunakan s()fungsi:

my.gam <- gam(y~s(x1) + x2, family=gaussian())

di sini, x1akan dipasang menggunakan spline dan x2linear seperti pada regresi linier normal. Di dalam gamAnda dapat menentukan keluarga distribusi dan fungsi tautan seperti pada glm. Jadi untuk cocok dengan model dengan fungsi log-link, Anda dapat menentukan pilihan family=gaussian(link="log")dalam gamseperti di glm.

Lihat posting ini dari situs.


1
Penjelasan yang bagus. Saya tidak tahu bahwa Box-Cox eksplisit adalah metode yang paling umum untuk memilih transformasi. Jika Anda menghitung orang yang hanya memilih log dengan cara apa pun, tebakan liar saya sendiri adalah bahwa itu adalah metode minoritas. Titik pilih-pilih itu tidak memengaruhi hal lain, secara alami.
Nick Cox

@NickCox Terima kasih (+1 untuk jawaban Anda, btw). Pernyataan bahwa Box-Cox adalah metode yang paling umum berasal dari buku John Fox. Saya menerima begitu saja karena saya tidak memiliki cukup pengalaman untuk menilai pernyataan itu. Saya akan menghapus pernyataan itu.
COOLSerdash

Terima kasih banyak atas penjelasan detailnya. Saya akan mencoba dan menerapkannya ke data saya sekarang.
zgall1

@COOLSerdash Menggunakan langkah-langkah terperinci Anda, saya menerapkan transformasi Box Cox ke variabel dependen saya dan kemudian variabel independen dan memiliki plot berikut dari variabel diagnostik saya - i.imgur.com/eO01djl.jpg Jelas, ada peningkatan tetapi tampaknya masih ada peningkatan ada masalah dengan variabilitas konstan dan tidak memihak dan pasti ada masalah dengan normalitas. Ke mana saya bisa pergi dari sini?
zgall1

1
@ zgall1 Terima kasih atas tanggapan Anda, saya menghargainya. Hm, ya, transformasi sepertinya tidak banyak membantu :). Pada titik ini, saya mungkin akan mencoba menggunakan splines untuk prediktor menggunakan model aditif umum (GAM) dengan mgcvpaket dan gam. Jika itu tidak membantu, saya kehabisan akal saya takut. Ada orang di sini yang jauh lebih berpengalaman daripada saya dan mungkin mereka bisa memberi Anda saran lebih lanjut. Saya juga tidak tahu banyak tentang baseball. Mungkin ada model yang lebih logis yang masuk akal dengan data ini.
COOLSerdash

8

Anda harus memberi tahu kami lebih lanjut tentang sifat respons (hasil, tergantung) variabel Anda. Dari plot pertama Anda sangat condong positif dengan banyak nilai mendekati nol dan beberapa negatif. Dari situ dimungkinkan, tetapi tidak bisa dihindari, transformasi itu akan membantu Anda, tetapi pertanyaan yang paling penting adalah apakah transformasi akan membuat data Anda lebih dekat dengan hubungan linier.

Perhatikan bahwa nilai-nilai negatif untuk respon menghilangkan transformasi logaritmik lurus, tetapi tidak log (respon + konstan), dan bukan model linear umum dengan tautan logaritmik.

Ada banyak jawaban di situs ini yang membahas log (respons + konstan), yang membagi orang statistik: beberapa orang tidak menyukainya sebagai ad hoc dan sulit untuk diajak bekerja sama, sementara yang lain menganggapnya sebagai perangkat yang sah.

GLM dengan tautan log masih dimungkinkan.

Sebagai alternatif, mungkin saja model Anda mencerminkan semacam proses campuran, dalam hal ini model khusus yang mencerminkan proses pembuatan data secara lebih dekat adalah ide yang bagus.

(KEMUDIAN)

OP memiliki PERANG variabel dependen dengan nilai berkisar sekitar 100 hingga -2. Untuk mengatasi masalah dengan mengambil logaritma nol atau nilai negatif, OP mengusulkan fudge nol dan negatif ke 0,000001. Sekarang pada skala logaritmik (basis 10) nilai-nilai tersebut berkisar dari sekitar 2 (100 atau lebih) hingga -6 (0,000001). Minoritas titik-titik fud pada skala logaritmik sekarang menjadi minoritas outlier besar. Plot log_10 (WAR fudged) terhadap hal lain untuk melihat ini.


Karena Anda mungkin dapat mengetahui dari sebar yang diposting di atas, saya menggunakan kumpulan data statistik bisbol. Variabel independen, WAR, pada dasarnya adalah ukuran kumulatif dari nilai yang disumbangkan oleh seorang pemain selama karier mereka di tingkat liga utama. Variabel independen, AdjSLG, SOPct dan BBPct adalah statistik liga minor yang biasanya dianggap memprediksi keberhasilan di tingkat liga utama. Variabel Usia adalah usia di mana pemain menghasilkan statistik liga minor. Variabel dummy digunakan untuk menunjukkan tingkat liga minor di mana statistik diproduksi.
zgall1

Berkenaan dengan masalah variabel independen negatif (PERANG), untuk alasan yang agak rumit, masuk akal untuk kembali kode itu sebagai nol jika itu membuat proses transformasi lebih mudah. Dalam kerangka dataset ini, ini adalah prosedur yang dapat dibenarkan. Jika Anda ingin saya membahas lebih detail (peringatan - diperlukan jargon baseball), saya senang melakukannya.
zgall1

1
Tampaknya WAR adalah variabel dependen Anda . Anda memberikan bukti untuk pernyataan saya, yang disengketakan di tempat lain di situs ini, bahwa kedua istilah ini sering membingungkan. Saran saya adalah jangan mengkodekan ulang nilai negatif ke nol (memperlakukan data secara salah) tetapi menggunakan GLM dengan tautan log. Harap anggap tidak ada minat, atau pengetahuan tentang, hal-hal kecil bisbol di pihak saya.
Nick Cox

Anda benar bahwa WAR adalah variabel dependen saya. Saya akan melihat GLM dengan tautan log. Terima kasih atas sarannya.
zgall1

1
Mungkin bermanfaat untuk mengetahui bagaimana PERANG karier dihitung (alias pahami proses pembuatan data).
Affine
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.