Mengurangi jumlah variabel dalam regresi berganda

9

Saya memiliki set data besar yang terdiri dari nilai beberapa ratus variabel keuangan yang dapat digunakan dalam regresi berganda untuk memprediksi perilaku dana indeks dari waktu ke waktu. Saya ingin mengurangi jumlah variabel menjadi sepuluh atau lebih sambil tetap mempertahankan kekuatan prediksi sebanyak mungkin. Ditambahkan: Rangkaian variabel yang dikurangi harus merupakan himpunan bagian dari set variabel asli untuk menjaga makna ekonomi dari variabel asli. Jadi, misalnya, saya tidak boleh berakhir dengan kombinasi linear atau agregat dari variabel asli.

Beberapa (mungkin naif) pemikiran tentang bagaimana melakukan ini:

  1. Lakukan regresi linier sederhana dengan setiap variabel dan pilih sepuluh dengan nilai . Tentu saja, tidak ada jaminan bahwa sepuluh variabel individu terbaik yang digabungkan akan menjadi kelompok sepuluh terbaik.R2
  2. Lakukan analisis komponen utama dan cobalah untuk menemukan sepuluh variabel asli dengan asosiasi terbesar dengan beberapa sumbu utama pertama.

Saya tidak berpikir saya bisa melakukan regresi hirarkis karena variabel tidak benar-benar bersarang. Mencoba semua kombinasi yang mungkin dari sepuluh variabel secara komputasi tidak mungkin karena ada terlalu banyak kombinasi.

Apakah ada pendekatan standar untuk mengatasi masalah ini mengurangi jumlah variabel dalam regresi berganda?

Sepertinya ini akan menjadi masalah yang cukup umum sehingga akan ada pendekatan standar.

Jawaban yang sangat membantu adalah jawaban yang tidak hanya menyebutkan metode standar tetapi juga memberikan tinjauan umum tentang bagaimana dan mengapa ia bekerja. Atau, jika tidak ada satu pendekatan standar tetapi lebih dari satu pendekatan dengan kekuatan dan kelemahan yang berbeda, jawaban yang sangat membantu akan menjadi salah satu yang membahas pro dan kontra mereka.

Komentar whuber di bawah ini menunjukkan bahwa permintaan pada paragraf terakhir terlalu luas. Sebagai gantinya, saya akan menerima sebagai jawaban yang baik daftar pendekatan utama, mungkin dengan deskripsi masing-masing yang sangat singkat. Setelah saya memiliki persyaratan, saya bisa menggali rinciannya masing-masing.

Mike Spivey
sumber
1
Mike, Anda dapat menelusuri Bab 3 ESL , jika Anda tidak terbiasa dengannya. Halaman di tautan memberikan poin ke PDF teks yang gratis dan legal.
kardinal
Dapatkah Anda mengklarifikasi jika Anda hanya ingin mempertahankan, katakanlah, sepuluh variabel asli atau juga akan tertarik pada metode yang menggunakan subset kecil kombinasi linear dari variabel asli (yang terakhir adalah sesuatu seperti regresi komponen utama tradisional) akan memberi Anda).
kardinal
3
Balasan ini memberikan contoh nyata dari salah satu (banyak) masalah dengan metode 1. Sebuah komentar oleh @ cardinal untuk balasan Frank Harrell sampai pada inti masalah dengan metode 2: apa pun yang Anda lakukan dengan variabel independen saja, tanpa mempertimbangkan masalah mereka. hubungan dengan variabel dependen, risiko menjadi tidak relevan atau lebih buruk. Sejauh jawaban standar atau "kanonik" pergi, meminta satu di sini sedikit seperti meminta diskusi tentang semua metode untuk menemukan titik-titik rasional pada kurva elips, dengan pro dan kontra mereka :-).
Whuber
2
Sebagaimana dicatat oleh orang lain di sini, metode 1 akan menyebabkan masalah. Untuk perawatan yang dapat diakses secara intuisi tentang mengapa itu benar / deskripsi dari salah satu masalah dengan pendekatan ini, Anda mungkin ingin membaca ini: stats.stackexchange.com/questions/20836/…
gung
1
Terima kasih kepada whuber dan gung untuk penjelasan masalah dengan ide pertama.
Mike Spivey

Jawaban:

1

Masalah ini biasanya disebut Subset Seleksi dan ada beberapa pendekatan yang berbeda. Lihat Google Cendekia untuk ikhtisar tentang artikel terkait .

Florian Brucker
sumber
Terima kasih. Mengetahui nama masalahnya cukup membantu!
Mike Spivey
6

Metode 1 tidak berfungsi. Metode 2 memiliki harapan tergantung pada bagaimana Anda melakukannya. Lebih baik memasukkan komponen utama dalam urutan varian yang dijelaskan. Pendekatan yang lebih dapat diinterpretasikan adalah melakukan pengelompokan variabel, kemudian mengurangi setiap klaster menjadi skor tunggal (tidak menggunakan Y), kemudian menyesuaikan model dengan skor kluster.

Frank Harrell
sumber
+1. Dengan "pengelompokan variabel", maksud Anda analisis faktor - itu strategi yang mungkin saya gunakan (juga sebelum melihat y). Saya menganggap analisis kluster sebagai observasi kelompok daripada variabel, tetapi saya hanya memiliki pengetahuan yang dangkal tentang analisis kluster.
gung - Reinstate Monica
1
Sepertinya tidak ada alasan apriori untuk percaya bahwa arah varians maksimal dari para prediktor tentu sangat berkorelasi dengan respons . Mungkin saya salah atau salah paham dengan komentar Anda. Bisakah Anda mengklarifikasi?
kardinal
1
Juga, kedengarannya seperti OP tidak (cukup) menggambarkan regresi komponen utama dalam Metode 2.
kardinal
Saya tidak sepenuhnya jelas dalam posting asli saya, tetapi saya perlu subset dari variabel asli. Jadi analisis komponen utama lurus atau pengelompokan tidak benar-benar apa yang saya cari.
Mike Spivey
1
Pengelompokan variabel terkait dengan analisis faktor tetapi lebih sederhana. Variabel dikelompokkan dalam bagaimana mereka berkorelasi satu sama lain. Lihat varclusfungsi dalam Hmiscpaket R , atau PROC VARCLUS di SAS. Pengurangan data dapat membantu dengan membuat subset variabel jika Anda berhati-hati; Anda dapat menghapus seluruh cluster jika nilai- nya adalah 0,3. Dengan komponen utama ada teknik seperti pengurangan baterai di mana Anda pada dasarnya memperkirakan PC dengan subset dari variabel penyusunnya. P
Frank Harrell
3

Dalam bab 5 dari Penambangan Data dengan R, penulis menunjukkan beberapa cara untuk memilih prediktor yang paling berguna. (Dalam konteks bioinformatika, di mana setiap baris sampel memiliki 12.000 kolom!)

Dia pertama kali menggunakan beberapa filter berdasarkan distribusi statistik. Misalnya, jika Anda memiliki setengah lusin prediktor semua dengan mean dan sd yang sama maka Anda bisa lolos hanya dengan menyimpan salah satunya.

Dia kemudian menunjukkan bagaimana menggunakan hutan acak untuk menemukan mana yang merupakan prediktor paling berguna. Berikut ini adalah contoh abstrak mandiri. Anda dapat melihat saya punya 5 prediktor yang baik, 5 yang buruk. Kode ini menunjukkan cara mempertahankan yang terbaik 3.

set.seed(99)

d=data.frame(
  y=c(1:20),
  x1=log(c(1:20)),
  x2=sample(1:100,20),
  x3=c(1:20)*c(11:30),
  x4=runif(20),
  x5=-c(1:20),
  x6=rnorm(20),
  x7=c(1:20),
  x8=rnorm(20,mean=100,sd=20),
  x9=jitter(c(1:20)),
  x10=jitter(rep(3.14,20))
  )

library(randomForest)
rf=randomForest(y~.,d,importance=T)
print(importance(rf))
#         %IncMSE IncNodePurity
# x1  12.19922383    130.094641
# x2  -1.90923082      6.455262
# ...

i=importance(rf)
best3=rownames(i)[order(i[,"%IncMSE"],decreasing=T)[1:3]]
print(best3)
#[1] "x1" "x5" "x9"

reduced_dataset=d[,c(best3,'y')]

Pendekatan terakhir penulis adalah menggunakan algoritma pengelompokan hierarkis untuk mengelompokkan prediktor yang sama ke dalam, katakanlah, 30 kelompok. Jika Anda ingin 30 prediktor yang beragam, Anda kemudian memilih satu dari masing-masing dari 30 kelompok tersebut, secara acak.

Berikut adalah beberapa kode, menggunakan data sampel yang sama seperti di atas, untuk memilih 3 dari 10 kolom:

library(Hmisc)
d_without_answer=d[,names(d)!='y']
vc=varclus(as.matrix(d_without_answer))
print(cutree(vc$hclust,3))
# x1  x2  x3  x4  x5  x6  x7  x8  x9 x10 
#  1   2   1   3   1   1   1   2   1   3 

Data sampel saya sama sekali tidak cocok dengan pendekatan ini, karena saya memiliki 5 prediktor yang baik dan 5 yang hanya berisik. Jika semua 10 prediktor sedikit berkorelasi dengan y, dan memiliki peluang bagus untuk menjadi lebih baik ketika digunakan bersama-sama (yang sangat mungkin dalam domain finansial), maka ini mungkin merupakan pendekatan yang baik.

Darren Cook
sumber
2

Anda dapat mempertimbangkan menggunakan metode seperti LASSO yang mengatur kuadrat terkecil dengan memilih solusi yang meminimalkan satu norma dari vektor parameter. Ternyata ini memiliki efek dalam praktik meminimalkan jumlah entri bukan nol dalam vektor parameter. Meskipun LASSO populer di beberapa kalangan statistik banyak metode terkait lainnya telah dipertimbangkan dalam dunia penginderaan tekan.

Brian Borchers
sumber
Terima kasih. Saya akan mencari LASSO. (Sepertinya itu disebutkan dalam referensi yang diberikan kardinal juga.)
Mike Spivey