Saat melakukan beberapa regresi, kapan Anda harus memusatkan variabel prediktor Anda & kapan Anda harus membakukannya?

281

Dalam beberapa literatur, saya telah membaca bahwa regresi dengan berbagai variabel penjelas, jika dalam unit yang berbeda, perlu distandarisasi. (Standarisasi terdiri dari pengurangan mean dan pembagian dengan deviasi standar.) Dalam kasus lain apa saya perlu melakukan standarisasi data? Apakah ada kasus di mana saya hanya harus memusatkan data saya (yaitu, tanpa membagi dengan standar deviasi)?

mathieu_r
sumber
11
Sebuah posting terkait di blog Andrew Gelman ini.
31
Selain jawaban bagus yang sudah diberikan, izinkan saya menyebutkan bahwa ketika menggunakan metode hukuman seperti regresi ridge atau laso hasilnya tidak lagi invarian dengan standardisasi. Namun, sering direkomendasikan untuk melakukan standarisasi. Dalam hal ini bukan karena alasan yang terkait langsung dengan interpretasi, tetapi karena hukuman kemudian akan memperlakukan variabel penjelas yang berbeda pada pijakan yang lebih setara.
NRH
6
Selamat datang di situs @mathieu_r! Anda telah memposting dua pertanyaan yang sangat populer. Harap pertimbangkan untuk memilih / menerima beberapa jawaban luar biasa yang telah Anda terima untuk kedua pertanyaan;)
Makro
1
Ketika saya membaca T&J ini mengingatkan saya pada situs usenet yang saya temukan bertahun-tahun yang lalu faqs.org/faqs/ai-faq/neural-nets/part2/section-16.html Ini memberikan beberapa masalah dan pertimbangan dalam beberapa masalah dan pertimbangan sederhana. ketika seseorang ingin menormalkan / menstandarkan / mengubah skala data. Saya tidak melihatnya disebutkan di mana pun pada jawaban di sini. Ini memperlakukan subjek dari lebih dari perspektif pembelajaran mesin, tetapi mungkin membantu seseorang datang ke sini.
Paul

Jawaban:

213

Dalam regresi, sering direkomendasikan untuk memusatkan variabel sehingga prediktor memiliki rata-rata . Ini membuatnya sehingga istilah intersep diinterpretasikan sebagai nilai yang diharapkan dari ketika nilai-nilai prediktor diatur ke sarana mereka . Kalau tidak, intersep ditafsirkan sebagai nilai yang diharapkan dari ketika prediktor ditetapkan ke 0, yang mungkin bukan situasi yang realistis atau dapat ditafsirkan (misalnya bagaimana jika prediktornya tinggi dan berat?). Alasan praktis lain untuk penskalaan dalam regresi adalah ketika satu variabel memiliki skala yang sangat besar, misalnya jika Anda menggunakan ukuran populasi suatu negara sebagai prediktor. Dalam hal itu, koefisien regresi mungkin sangat0YiYiurutan kecil besarnya (misalnya ) yang dapat sedikit mengganggu ketika Anda membaca output komputer, jadi Anda dapat mengubah variabel menjadi, misalnya, ukuran populasi dalam jutaan. Konvensi yang Anda standarisasi prediksi utamanya ada sehingga satuan koefisien regresi sama.106

Seperti @gung menyinggung dan @ MånsT menunjukkan secara eksplisit (+1 untuk keduanya, btw), pemusatan / penskalaan tidak memengaruhi inferensi statistik Anda dalam model regresi - estimasi disesuaikan dengan tepat dan nilai- akan sama.p

Situasi lain di mana pemusatan dan / atau penskalaan mungkin berguna:

  • ketika Anda mencoba menjumlahkan atau variabel rata-rata yang ada di skala yang berbeda , mungkin untuk membuat skor komposit semacam. Tanpa penskalaan, ini mungkin merupakan kasus bahwa satu variabel memiliki dampak yang lebih besar pada jumlah karena murni skalanya, yang mungkin tidak diinginkan.

  • Untuk menyederhanakan perhitungan dan notasi. Misalnya, matriks kovarians sampel dari matriks nilai yang dipusatkan dengan sarana sampelnya hanyalah . Demikian pula, jika variabel acak univariat telah berpusat rata-rata, maka dan varians dapat diperkirakan dari sampel dengan melihat rata-rata sampel dari kuadrat yang diamati. nilai-nilai.XXXvar(X)=E(X2)

  • Terkait dengan yang disebutkan di atas, PCA hanya dapat diartikan sebagai dekomposisi nilai singular dari matriks data ketika kolom pertama kali dipusatkan dengan cara mereka.

Perhatikan bahwa penskalaan tidak diperlukan dalam dua poin terakhir yang saya sebutkan dan pemusatan mungkin tidak diperlukan dalam poin pertama yang saya sebutkan, sehingga keduanya tidak perlu berjalan beriringan setiap saat.

Makro
sumber
2
+1, ini adalah poin bagus yang tidak saya pikirkan. Untuk kejelasan, izinkan saya mendaftar beberapa contoh konkret di mana seorang peneliti mungkin ingin menggabungkan variabel penjelas sebelum menjalankan regresi, & dengan demikian perlu distandarisasi. Satu kasus mungkin untuk penelitian gangguan perilaku anak-anak; peneliti mungkin mendapatkan peringkat dari kedua orang tua & guru, & kemudian ingin menggabungkan mereka ke dalam satu ukuran ketidaksesuaian. Kasus lain dapat berupa studi tentang tingkat aktivitas di panti jompo dengan penilaian sendiri oleh penghuni & jumlah tanda tangan pada lembar pendaftaran untuk kegiatan.
gung
2
Tapi bukankah kita secara teori menggunakan mean populasi dan standar deviasi untuk pemusatan / penskalaan? Dalam praktiknya, apakah sesederhana menggunakan mean sampel / SD atau ada lebih dari itu?
AlefSin
3
Demi kelengkapan, izinkan saya menambahkan jawaban yang bagus ini bahwa dari terpusat dan terstandarisasi adalah matriks korelasi. XXX
cbeleites
1
@ AlefSin: Anda mungkin benar-benar ingin menggunakan sesuatu yang lain daripada populasi rata-rata / sd, lihat jawaban saya. Tapi poin Anda bahwa kita harus memikirkan apa yang harus digunakan untuk pemusatan / penskalaan sangat bagus.
cbeleites
@ AlefSin, semua komentar saya dibuat dengan asumsi Anda menggunakan mean sampel / SD. Jika Anda memusatkan pada sampel berarti interpretasi intersep masih sama, kecuali itu adalah nilai yang diharapkan dari ketika prediktor menetapkan rata-rata sampel mereka . Informasi dalam tiga poin-poin saya masih berlaku ketika Anda memusatkan / skala dengan jumlah sampel. Perlu juga dicatat bahwa jika Anda memusatkan pada mean sampel, hasilnya adalah variabel dengan mean 0 tetapi penskalaan dengan sampel standar deviasi tidak, secara umum menghasilkan hasil dengan standar deviasi 1 (misalnya t-statistik). Yi
Makro
143

Anda telah menemukan kepercayaan yang sama. Namun, secara umum, Anda tidak perlu memusatkan atau membakukan data Anda untuk regresi berganda. Variabel penjelas yang berbeda hampir selalu pada skala yang berbeda (yaitu, diukur dalam unit yang berbeda). Ini bukan masalah; beta diperkirakan sedemikian rupa sehingga mereka mengkonversi satuan dari masing-masing variabel penjelas menjadi satuan variabel tanggapan dengan tepat. Satu hal yang kadang-kadang orang katakan adalah bahwa jika Anda telah membuat standar variabel Anda terlebih dahulu, Anda kemudian dapat menafsirkan beta sebagai ukuran penting. Misalnya, jika , danβ1=.6β2=.3, maka variabel penjelas pertama dua kali lebih penting dari yang kedua. Meskipun ide ini menarik, sayangnya, itu tidak valid. Ada beberapa masalah, tetapi mungkin yang paling mudah untuk diikuti adalah Anda tidak memiliki cara untuk mengontrol kemungkinan batasan rentang dalam variabel. Menyimpulkan 'pentingnya' variabel penjelas yang berbeda relatif satu sama lain adalah masalah filosofis yang sangat rumit. Tidak ada yang menyarankan bahwa standardisasi itu buruk atau salah , hanya saja itu biasanya tidak diperlukan .

Satu-satunya kasus yang bisa saya pikirkan adalah bagian atas kepala saya di mana keterpusatan membantu adalah sebelum membuat istilah daya. Katakanlah Anda memiliki variabel, , yang berkisar dari 1 hingga 2, tetapi Anda curiga hubungan curvilinear dengan variabel respons, dan karenanya Anda ingin membuat istilah . Jika Anda tidak memusatkan terlebih dahulu, istilah kuadrat Anda akan sangat berkorelasi dengan , yang dapat memperkeruh estimasi beta. Pemusatan pertama mengatasi masalah ini. XX2XX


(Pembaruan ditambahkan jauh kemudian :) Kasus analog yang saya lupa sebutkan adalah membuat istilah interaksi . Jika istilah interaksi / produk dibuat dari dua variabel yang tidak berpusat pada 0, sejumlah jumlah collinearity akan diinduksi (dengan jumlah yang tepat tergantung pada berbagai faktor). Pemusatan pertama mengatasi masalah potensial ini. Untuk penjelasan yang lebih lengkap, lihat jawaban yang sangat bagus ini dari @Affine: Diagnostik collinearity hanya bermasalah ketika istilah interaksi dimasukkan .

gung
sumber
12
Jika ada yang tertarik, saya juga berbicara tentang ide yang salah menggunakan beta standar untuk menyimpulkan 'kepentingan' relatif di sini: pengujian linier berganda-regresi-untuk-hipotesis
gung
Terima kasih untuk balasan Anda. Saya pikir saya sudah mengetahuinya sementara itu: orang bisa memikirkan istilah kuadrat sebagai X berinteraksi dengan dirinya sendiri, sehingga untuk berbicara dan titik Anda pada variabel yang berinteraksi akan lebih umum.
Abhimanyu Arora
6
Belsley, Kuh, dan Welsch memiliki analisis yang cermat tentang situasi ini dalam buku mereka 1980 Regression Diagnostics. (Lihat Apendiks 3B untuk perinciannya.) Mereka menyimpulkan Anda salah bahwa penyelamatan ulang tidak membantu. Analisis mereka adalah dalam hal stabilitas numerik dari prosedur solusi, yang diukur dalam hal jumlah kondisi data matriks . Angka kondisi itu bisa sangat tinggi ketika variabel diukur pada skala dengan rentang yang berbeda. Penyelamatan kemudian akan menyerap sebagian besar "keburukan" di dalam faktor skala. Masalah yang dihasilkan akan jauh lebih terkondisi. XX
whuber
Tentang beta1 = 0,6 dan beta2 = 0,3, saya tidak yakin apakah mengatakan beta1 sama pentingnya dengan beta2, tapi saya pikir karena mereka distandarisasi mereka berada di 'skala' yang sama, yaitu unit adalah standar deviasi dari mean. Karena itu, respon Y akan dua kali lebih tinggi dalam hal beta1 (memegang x2 konstan) daripada untuk beta2 (memegang x1 konstan). Baik? Atau apakah saya salah paham tentang sesuatu yang sedang terjadi?
chao
@ chao, Anda belum benar-benar menyingkirkan unit yang intrinsik ke 2 variabel; Anda baru saja menyembunyikannya. Sekarang, unit X1 adalah per 13,9 cm, dan unit X2 adalah per 2,3 derajat Celcius.
gung
80

Selain komentar dalam jawaban lain, saya ingin menunjukkan bahwa skala dan lokasi variabel penjelas tidak memengaruhi validitas model regresi dengan cara apa pun.

Pertimbangkan model .y=β0+β1x1+β2x2++ϵ

The kuadrat estimator setidaknya dari tidak terpengaruh oleh pergeseran. Alasannya adalah bahwa ini adalah kemiringan permukaan yang pas - seberapa banyak permukaan berubah jika Anda mengubah satu unit. Ini tidak tergantung pada lokasi. (Namun, estimator tidak.)β1,β2,x1,x2,β0

Dengan melihat persamaan untuk estimator Anda dapat melihat bahwa skala dengan faktor timbangan dengan faktor . Untuk melihat ini, perhatikan itux1aβ^11/a

β^1(x1)=i=1n(x1,ix¯1)(yiy¯)i=1n(x1,ix¯1)2.

Jadi

β^1(ax1)=i=1n(ax1,iax¯1)(yiy¯)i=1n(ax1,iax¯1)2=ai=1n(x1,ix¯1)(yiy¯)a2i=1n(x1,ix¯1)2=β^1(x1)a.

Dengan melihat rumus yang sesuai untuk (misalnya) jelas (mudah-mudahan) jelas bahwa penskalaan ini tidak memengaruhi penaksir lereng lainnya.β^2

Dengan demikian, penskalaan sama dengan penskalaan lereng yang sesuai.

Seperti yang ditunjukkan gung, beberapa orang suka mengubah skala dengan standar deviasi dengan harapan bahwa mereka akan dapat menafsirkan betapa "pentingnya" variabel-variabel yang berbeda itu. Meskipun praktik ini dapat dipertanyakan, dapat dicatat bahwa ini terkait dengan pemilihan dalam perhitungan di atas, di mana adalah standar deviasi (yang dalam hal aneh dikatakan dimulai, karena adalah diasumsikan bersifat deterministik).ai=1/sisix1xi

MånsT
sumber
1
Apakah ide yang baik untuk melakukan standarisasi variabel yang sangat condong atau lebih baik hanya dengan membakukan variabel yang terdistribusi secara simetris? Haruskah kita hanya menetapkan variabel input atau hasilnya saja?
skan
31

Jika Anda menggunakan gradient descent agar sesuai dengan model Anda, kovariat standardisasi dapat mempercepat konvergensi (karena ketika Anda memiliki kovariat unscaled, parameter yang sesuai mungkin mendominasi gradien secara tidak tepat). Untuk menggambarkan hal ini, beberapa kode R:

> objective <- function(par){ par[1]^2+par[2]^2}  #quadratic function in two variables with a minimum at (0,0)
> optim(c(10,10), objective, method="BFGS")$counts  #returns the number of times the function and its gradient had to be evaluated until convergence
    function gradient 
          12        3 
> objective2 <- function(par){ par[1]^2+0.1*par[2]^2}  #a transformation of the above function, corresponding to unscaled covariates
> optim(c(10,10), objective2, method="BFGS")$counts
function gradient 
      19       10 
> optim(c(10,1), objective2, method="BFGS")$counts  #scaling of initial parameters doesn't get you back to original performance
function gradient 
      12        8

Juga, untuk beberapa aplikasi SVM, penskalaan dapat meningkatkan kinerja prediktif: Penskalaan fitur dalam deskripsi data vektor dukungan .

mogron
sumber
25

Saya lebih suka "alasan kuat" untuk pemusatan dan standardisasi (mereka sangat sering ada). Secara umum, mereka lebih berkaitan dengan set data dan masalah daripada dengan metode analisis data.

Sangat sering, saya lebih suka memusatkan (yaitu menggeser asal data) ke titik lain yang secara fisik / kimia / biologis / ... lebih bermakna daripada rata-rata (lihat juga jawaban Makro), misalnya

  • rata-rata dari kelompok kontrol

  • sinyal kosong

Stabilitas numerik adalah alasan terkait algoritma untuk memusatkan dan / atau mengecilkan data.

Lihat juga pertanyaan serupa tentang standardisasi . Yang juga mencakup "pusat saja".

cbeleites
sumber
24

Untuk mengilustrasikan masalah stabilitas numerik yang disebutkan oleh @cbeleites, berikut adalah contoh dari Simon Wood tentang cara "memecah" lm(). Pertama kita akan menghasilkan beberapa data sederhana dan cocok dengan kurva kuadratik sederhana.

set.seed(1); n <- 100
xx <- sort(runif(n))
y <- .2*(xx-.5)+(xx-.5)^2 + rnorm(n)*.1
x <- xx+100
b <- lm(y ~ x+I(x^2))

plot(x,y)
lines(x, predict(b), col='red')

masukkan deskripsi gambar di sini

Tetapi jika kita menambahkan 900 ke X, maka hasilnya harus hampir sama kecuali bergeser ke kanan, bukan? Sayangnya tidak...

X <- x + 900
B <- lm(y ~ X+I(X^2))
plot(X,y)
lines(X, predict(B), col='blue')

masukkan deskripsi gambar di sini

Edit untuk menambahkan komentar oleh @Scortchi - jika kita melihat objek yang dikembalikan oleh lm () kita melihat bahwa istilah kuadratik belum diperkirakan dan ditampilkan sebagai NA.

> B
Call:
lm(formula = y ~ X + I(X^2))

Coefficients:
(Intercept)            X       I(X^2)  
  -139.3927       0.1394           NA  

Dan memang seperti yang disarankan oleh @Scortchi, jika kita melihat matriks model dan mencoba menyelesaikannya secara langsung, itu "pecah".

> X <- model.matrix(b) ## get same model matrix used above
> beta.hat <- solve(t(X)%*%X,t(X)%*%y) ## direct solution of ‘normal equations’
Error in solve.default(t(X) %*% X, t(X) %*% y) : 
  system is computationally singular: reciprocal condition number = 3.9864e-19

Namun, lm()tidak memberi saya peringatan atau pesan kesalahan selain dari NAs pada I(X^2)baris summary(B)di R-3.1.1. Algoritme lain tentu saja dapat "rusak" dengan cara yang berbeda dengan contoh yang berbeda.

Sean
sumber
10
(+1) Catatan lmgagal memperkirakan koefisien untuk istilah kuadratik, & memberi peringatan tentang matriks desain tunggal - mungkin lebih menggambarkan masalah secara langsung daripada plot-plot ini.
Scortchi
3

Saya ragu dengan serius apakah memusatkan atau membakukan data asli dapat benar-benar mengurangi masalah multikolinieritas ketika istilah kuadrat atau istilah interaksi lainnya dimasukkan dalam regresi, karena beberapa dari Anda, terutama gung, telah merekomendasikan di atas.

Untuk mengilustrasikan poin saya, mari kita pertimbangkan contoh sederhana.

Misalkan spesifikasi yang sebenarnya mengambil bentuk sebagai berikut

yi=b0+b1xi+b2xi2+ui

Jadi persamaan OLS yang sesuai diberikan oleh

yi=yi^+ui^=b0^+b1^xi+b2^xi2+ui^

di mana adalah nilai yang pas dari , adalah residual, - menunjukkan perkiraan OLS untuk - - parameter yang akhirnya kami minati. Untuk kesederhanaan, biarkan sesudahnya.yi^yiuib0^b2^b0b2zi=xi2

Biasanya, kita tahu dan cenderung sangat berkorelasi dan ini akan menyebabkan masalah multikolinieritas. Untuk mengurangi ini, saran populer akan memusatkan data asli dengan mengurangi rata-rata dari sebelum menambahkan istilah kuadrat.xx2yiyi

Cukup mudah untuk menunjukkan bahwa rata-rata diberikan sebagai berikut: mana , , menunjukkan cara masing-masing , dan .yi

y¯=b0^+b1^x¯+b2^z¯
y¯x¯z¯yixizi

Karenanya, mengurangkany¯yi

yiy¯=b1^(xix¯)+b2^(ziz¯)+ui^

yiy¯xix¯ziz¯b1^b2^

xx2xx2corr(x,z)=corr(xx¯,zz¯)

Singkatnya, jika pemahaman saya tentang pemusatan adalah benar, maka saya tidak berpikir bahwa pemusatan data akan membantu untuk mengurangi masalah MC yang disebabkan oleh memasukkan istilah kuadrat atau persyaratan tingkat tinggi lainnya ke dalam regresi.

Saya akan senang mendengar pendapat Anda!

rudi0086021
sumber
2
Terima kasih atas kontribusi Anda, @ rudi0086021. Anda mungkin benar, tetapi saya melihat beberapa masalah di sini. Pertama, pemusatan adalah tentang mengurangi rata-rata x , bukan tentang mengurangi rata-rata y ; Kedua, Anda harus memusatkan terlebih dahulu, memusatkan kata penutup tidak berpengaruh seperti yang Anda perhatikan. Pertimbangkan: x = c(1,2,3); x2 = x^2; cor(x, x2); # [1] 0.9897433; xc = c(-1,0,1); xc2 = xc^2; cor(xc, xc2) # [1] 0.
gung
Terima kasih atas balasan Anda, @gung. Inilah pikiran saya. Pertama, secara pribadi saya tidak melihat alasan yang meyakinkan untuk memperlakukan variabel dependen dan independen secara berbeda, yaitu untuk variabel independen, sementara tidak untuk variabel dependen.
rudi0086021
2
Kedua, seperti yang Anda katakan, mungkin kita harus memusatkan data sebelum membuat istilah kuadrat. Praktek seperti itu akan mengurangi masalah MC. Namun, hal itu dapat menyebabkan estimasi yang bias, atau lebih konkretnya, bias variabel dihilangkan (OVB). Untuk mengilustrasikan, lihat contoh berikut: anggap spesifikasi sebenarnya adalah: y = b0 + b1 * x + b2 * x ^ 2 + u. Memusatkan data sebelumnya akan memberikan: y = b0 + b1 * (x-xhar) + b2 * (x-xbar) ^ 2 + v, di mana istilah kesalahan baru v = u + b1 * xbar-b2 * xbar ^ 2 + 2b2 * xbar * x. Jelaslah bahwa cov (x-xbar, v)! = 0. Dengan demikian, sayangnya, memusatkan data sebelumnya akan menyebabkan perkiraan yang bias.
rudi0086021
@ rudi0086021 Sepertinya dalam komentar terakhir Anda, Anda berasumsi bahwa Anda akan mendapatkan koefisien yang sama ketika pas data terpusat seperti yang Anda miliki ketika pas data yang tidak terpusat. Tetapi pemusatan sebelum mengambil kuadrat bukanlah pergeseran sederhana oleh konstanta, jadi orang seharusnya tidak berharap untuk mendapatkan koefisien yang sama. Paling cocok setelah pemusatan diberikan oleh B0 + B1 * (x-xbar) + B2 * (x-xbar) ^ 2 di mana B0 = b0 + b1 * xbar + b2 * xbar ^ 2, B1 = b1 + 2 * b2 * xbar dan B2 = b2. Jadi, v = u. Maaf untuk menanggapi komentar ini dengan terlambat, tetapi selalu ada orang lain seperti saya yang melihatnya untuk pertama kalinya hari ini.
Tim Goodman