Cara memodelkan distribusi berbentuk aneh ini (hampir terbalik-J)

25

Variabel dependen saya yang ditunjukkan di bawah tidak sesuai dengan distribusi stok yang saya ketahui. Regresi linier menghasilkan residual miring kanan yang agak tidak normal, yang berhubungan dengan prediksi Y dengan cara yang aneh (plot kedua). Adakah saran untuk transformasi atau cara lain untuk mendapatkan hasil yang paling valid dan akurasi prediksi terbaik? Jika memungkinkan, saya ingin menghindari pengelompokan yang ceroboh ke dalam, katakanlah, 5 nilai (mis. 0, lo%, med%, hi%, 1).

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

rolando2
sumber
7
Anda akan lebih baik memberi tahu kami tentang data ini dan dari mana mereka berasal: sesuatu telah menjepit distribusi yang secara alami melampaui interval . Mungkin saja Anda telah menggunakan beberapa metode pengukuran atau prosedur statistik yang tidak sesuai untuk data Anda. Mencoba menambal kesalahan seperti itu dengan teknik pemasangan distribusi yang canggih, ekspresi ulang nonlinier, binning, dll., Hanya akan menambah kesalahan, jadi alangkah baiknya untuk menghindari masalah sama sekali. [0,1]
whuber
2
@whuber - Pemikiran yang bagus, tetapi variabel diciptakan melalui sistem birokratis yang rumit yang sayangnya diatur dalam batu. Saya tidak berhak untuk mengungkapkan sifat variabel yang terlibat di sini.
rolando2
1
Oke, itu layak dicoba. Saya berpikir bahwa alih-alih mengubah data, Anda mungkin masih ingin mengenali mekanisme penjepitan dalam bentuk prosedur ML untuk melakukan regresi: ini akan mirip dengan melihatnya sebagai data yang disensor kiri dan kanan .
whuber
Coba distribusi beta dengan parameter yang lebih kecil dari satu, en.wikipedia.org/wiki/File:Beta_distribution_pdf.svg
Alecos Papadopoulos
2
Jenis bak mandi atau distribusi berbentuk u ini umum di pembaca majalah di mana banyak orang akan membaca satu terbitan, misalnya, di kantor dokter atau pelanggan yang melihat setiap masalah dengan segelintir pembaca di antaranya. Beberapa komentar dan tanggapan telah menunjuk distribusi beta sebagai salah satu solusi yang mungkin. Literatur yang saya kenal dengan menunjuk ke beta-binomial sebagai opsi pemasangan yang lebih baik.
Mike Hunter

Jawaban:

47

Metode regresi yang disensor dapat menangani data seperti ini. Mereka menganggap residu berperilaku seperti dalam regresi linier biasa tetapi telah dimodifikasi sehingga

  1. (Sensor kiri): semua nilai lebih kecil dari ambang batas rendah, yang tidak tergantung pada data, (tetapi dapat bervariasi dari satu kasus ke yang lain) belum dikuantifikasi; dan / atau

  2. (Sensor kanan): semua nilai yang lebih besar dari ambang tinggi, yang tidak tergantung pada data (tetapi dapat bervariasi dari satu kasus ke yang lain) belum dikuantifikasi.

"Tidak terkuantifikasi" berarti kita tahu apakah suatu nilai jatuh di bawah (atau di atas) ambangnya, tetapi itu saja.

YX

YXβ+ε

εFσfσσ(xi,yi)

Λ=i=1nlogfσ(yixiβ).

i=1n1yii=n1+1n2yiysayadata. Kemungkinan log diperoleh dengan cara yang sama seperti sebelumnya: ini adalah log dari produk probabilitas.

Λ=saya=1n1logFσ(ysaya-xsayaβ)+saya=n1+1n2logfσ(ysaya-xsayaβ)+saya=n2+1nlog(1-Fσ(ysaya-xsayaβ)).

(β,σ)

Dalam pengalaman saya, metode seperti itu dapat bekerja dengan baik ketika kurang dari setengah data disensor; jika tidak, hasilnya bisa tidak stabil.


Berikut adalah Rcontoh sederhana menggunakan censRegpaket untuk menggambarkan bagaimana OLS dan hasil yang disensor dapat berbeda (banyak) bahkan dengan banyak data. Itu secara kualitatif mereproduksi data dalam pertanyaan.

library("censReg")
set.seed(17)
n.data <- 2960
coeff  <- c(-0.001, 0.005)
sigma  <- 0.005
x      <- rnorm(n.data, 0.5)
y      <- as.vector(coeff %*% rbind(rep(1, n.data), x) + rnorm(n.data, 0, sigma))
y.cen           <- y
y.cen[y < 0]    <- 0
y.cen[y > 0.01] <- 0.01
data = data.frame(list(x, y.cen))

0.0050.0010.005

Mari kita gunakan keduanya lmdan censRegagar sesuai dengan garis:

fit <- censReg(y.cen ~ x, data=data, left=0.0, right=0.01)
summary(fit)

Hasil dari regresi yang disensor ini, diberikan oleh print(fit), adalah

(Intercept)           x       sigma 
  -0.001028    0.004935    0.004856 

0.0010.0050.005

fit.OLS <- lm(y.cen ~ x, data=data)
summary(fit.OLS)

Kesesuaian OLS, diberikan oleh print(fit.OLS), adalah

(Intercept)            x  
   0.001996     0.002345  

summary0.002864

Sebagai perbandingan, mari kita batasi regresi untuk data yang diukur:

fit.part <- lm(y[0 <= y & y <= 0.01] ~ x[0 <= y & y <= 0.01])
summary(fit.part)

(Intercept)  x[0 <= y & y <= 0.01]  
   0.003240               0.001461  

Lebih buruk lagi!

Beberapa gambar merangkum situasinya.

lineplot <- function() {
  abline(coef(fit)[1:2], col="Red", lwd=2)
  abline(coef(fit.OLS), col="Blue", lty=2, lwd=2)
  abline(coef(fit.part), col=rgb(.2, .6, .2), lty=3, lwd=2)
}
par(mfrow=c(1,4))
plot(x,y, pch=19, cex=0.5, col="Gray", main="Hypothetical Data")
lineplot()
plot(x,y.cen, pch=19, cex=0.5, col="Gray", main="Censored Data")
lineplot()
hist(y.cen, breaks=50, main="Censored Data")
hist(y[0 <= y & y <= 0.01], breaks=50, main="Quantified Data")

Plot

00.01

Y0.00320.0037

whuber
sumber
jawaban bagus (+1). Jika kita secara visual menghapus dua spkies sensor, menurut saya variabel dependen memiliki sesuatu yang dekat dengan distribusi eksponensial, seolah-olah data yang mendasarinya adalah panjang dari beberapa proses. Apakah ini sesuatu untuk diperhitungkan?
user603
@ user603 Saya mensimulasikan nilai-nilai yang dikuantifikasi dengan bagian lengan atas seorang Gaussian, sebenarnya :-). Kita harus berhati-hati di sini, karena model probabilitas yang relevan berkaitan dengan residu dan bukan pada variabel respons itu sendiri. Meskipun sedikit rumit, orang dapat membuat plot residu yang disensor dan bahkan plot probabilitas yang disensor untuk menilai goodness of fit untuk beberapa distribusi hipotetis.
whuber
maksud saya adalah bahwa dengan Gaussian yang disensor berlipat ganda, histogram dari nilai-nilai yang tidak disensornya harus agak datar, tetapi nilai-nilai itu tampaknya menurun dengan lembut ketika kita menjauh dari 0.
user603
1
@ user603 Ah, tidak, bukan itu masalahnya: lihat sendiri histogram dari nilai yang dikuantifikasi. Mereka akan tampak miring hampir linier ke bawah, persis seperti dalam pertanyaan.
whuber
2
Saya mencoba regresi tersensor pada dataset saya dan hasilnya crossvalidated lebih baik daripada yang dari OLS. Tambahan yang bagus untuk toolkit saya - thx.
rolando2
9

Apakah nilainya selalu antara 0 dan 1?

Jika demikian, Anda dapat mempertimbangkan distribusi beta dan regresi beta.

Tetapi pastikan untuk memikirkan proses yang mengarah ke data Anda. Anda juga bisa melakukan model inflasi 0 dan 1 (0 model inflasi yang umum, Anda mungkin perlu memperluas hingga 1 inflasi sendiri). Perbedaan besar adalah jika lonjakan-lonjakan itu mewakili sejumlah besar tepat 0 dan 1 atau hanya nilai mendekati 0 dan 1.

Mungkin sebaiknya berkonsultasi dengan ahli statistik lokal (dengan perjanjian non-pengungkapan sehingga Anda dapat mendiskusikan detail dari mana data berasal) untuk mengetahui pendekatan terbaik.

Greg Snow
sumber
2
01
Ya, selalu dalam kisaran 0% hingga 1% ... Dan lonjakan ini memang tepat pada 0% dan 1%. Apakah model nol atau nol dan satu meningkat untuk data non-hitungan seperti ini?
rolando2
1
Ada nol inflasi normal, tetapi itu tidak berlaku di sini.
Peter Flom - Reinstate Monica
Dengan tepat 0 dan 1 tetapi terus-menerus di antaranya sepertinya mungkin ada distribusi berkelanjutan yang mendasari dengan vaues di luar wilayah yang dibulatkan menjadi 0 atau 1. Ini akan menjadi kasus tersensor ganda dan model bisa cocok menggunakan ide itu.
Greg Snow
4

Sejalan dengan saran Greg Snow aku pernah mendengar model beta juga berguna dalam situasi seperti itu (lihat Smithson & verkuilen, 2006, Pemeras Lemon Lebih Baik ), serta regresi kuantitatif ( Bottai et al., 2010 ), tetapi ini tampak seperti efek lantai dan langit-langit yang sangat jelas sehingga mungkin tidak sesuai (terutama regresi beta).

Alternatif lain adalah mempertimbangkan jenis model regresi yang disensor, khususnya Model Tobit , di mana kami menganggap hasil yang diamati dihasilkan oleh beberapa variabel laten yang mendasarinya yang kontinu (dan mungkin normal). Saya tidak akan mengatakan model berkelanjutan yang mendasarinya ini wajar mengingat histogram Anda, tetapi Anda dapat menemukan beberapa dukungan untuk itu karena Anda melihat distribusinya (mengabaikan lantai) memiliki kepadatan yang lebih tinggi pada nilai instrumen yang lebih rendah dan perlahan-lahan membatasi hingga lebih tinggi nilai-nilai.

Semoga beruntung, bahwa penyensoran sangat dramatis sehingga sulit untuk membayangkan memulihkan banyak informasi berguna dalam keranjang yang ekstrem. Bagiku hampir separuh sampel Anda berada di tempat sampah lantai dan langit-langit.

Andy W
sumber