Saya memiliki variabel dependen yang dapat berkisar dari 0 hingga tak terbatas, dengan 0s sebenarnya pengamatan yang benar. Saya mengerti menyensor dan model Tobit hanya berlaku ketika nilai sebenarnya dari adalah sebagian tidak diketahui atau hilang, di mana data kasus dikatakan terpotong. Beberapa informasi lebih lanjut tentang data yang disensor di utas ini .
Tapi di sini 0 adalah nilai sebenarnya yang dimiliki populasi. Menjalankan OLS pada data ini memiliki masalah menjengkelkan tertentu untuk membawa perkiraan negatif. Bagaimana saya harus memodelkan ?
> summary(data$Y)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.00 0.00 0.00 7.66 5.20 193.00
> summary(predict(m))
Min. 1st Qu. Median Mean 3rd Qu. Max.
-4.46 2.01 4.10 7.66 7.82 240.00
> sum(predict(m) < 0) / length(data$Y)
[1] 0.0972098
Perkembangan
Setelah membaca jawabannya, saya melaporkan kecocokan model rintangan Gamma menggunakan fungsi estimasi yang sedikit berbeda. Hasilnya cukup mengejutkan bagi saya. Pertama mari kita lihat DV. Yang jelas adalah data ekor yang sangat gemuk. Ini memiliki beberapa konsekuensi menarik pada evaluasi kecocokan yang akan saya komentari di bawah ini:
quantile(d$Y, probs=seq(0, 1, 0.1))
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.286533 3.566165 11.764706 27.286630 198.184818
Saya membuat model rintangan Gamma sebagai berikut:
d$zero_one = (d$Y > 0)
logit = glm(zero_one ~ X1*log(X2) + X1*X3, data=d, family=binomial(link = logit))
gamma = glm(Y ~ X1*log(X2) + X1*X3, data=subset(d, Y>0), family=Gamma(link = log))
Akhirnya saya mengevaluasi kecocokan sampel dengan menggunakan tiga teknik berbeda:
# logit probability * gamma estimate
predict1 = function(m_logit, m_gamma, data)
{
prob = predict(m_logit, newdata=data, type="response")
Yhat = predict(m_gamma, newdata=data, type="response")
return(prob*Yhat)
}
# if logit probability < 0.5 then 0, else logit prob * gamma estimate
predict2 = function(m_logit, m_gamma, data)
{
prob = predict(m_logit, newdata=data, type="response")
Yhat = predict(m_gamma, newdata=data, type="response")
return(ifelse(prob<0.5, 0, prob)*Yhat)
}
# if logit probability < 0.5 then 0, else gamma estimate
predict3 = function(m_logit, m_gamma, data)
{
prob = predict(m_logit, newdata=data, type="response")
Yhat = predict(m_gamma, newdata=data, type="response")
return(ifelse(prob<0.5, 0, Yhat))
}
Pada awalnya saya mengevaluasi kecocokan dengan langkah-langkah biasa: AIC, null deviance, mean absolute error, dll. Tetapi melihat kesalahan absolut kuantil dari fungsi-fungsi di atas menyoroti beberapa masalah terkait dengan probabilitas tinggi hasil 0 danekor gemuk ekstrim. Tentu saja, kesalahan tumbuh secara eksponensial dengan nilai Y yang lebih tinggi (ada juga nilai Y yang sangat besar di Max), tetapi yang lebih menarik adalah bahwa sangat bergantung pada model logit untuk memperkirakan 0s menghasilkan distribusi distribusi yang lebih baik (saya tidak akan ' tidak tahu cara menggambarkan fenomena ini dengan lebih baik):
quantile(abs(d$Y - predict1(logit, gamma, d)), probs=seq(0, 1, 0.1))
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
0.00320459 1.45525439 2.15327192 2.72230527 3.28279766 4.07428682 5.36259988 7.82389110 12.46936416 22.90710769 1015.46203281
quantile(abs(d$Y - predict2(logit, gamma, d)), probs=seq(0, 1, 0.1))
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
0.000000 0.000000 0.000000 0.000000 0.000000 0.309598 3.903533 8.195128 13.260107 24.691358 1015.462033
quantile(abs(d$Y - predict3(logit, gamma, d)), probs=seq(0, 1, 0.1))
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
0.000000 0.000000 0.000000 0.000000 0.000000 0.307692 3.557285 9.039548 16.036379 28.863912 1169.321773
sumber
Jawaban:
Disensor vs meningkat vs rintangan
Model yang disensor, rintangan, dan inflasi bekerja dengan menambahkan titik massa di atas kepadatan probabilitas yang ada. Perbedaannya terletak pada di mana massa ditambahkan, dan bagaimana. Untuk saat ini, cukup pertimbangkan untuk menambahkan titik massa pada 0, tetapi konsepnya digeneralisasikan dengan mudah ke kasus lain.
Semuanya menyiratkan proses menghasilkan data dua langkah untuk beberapa variabelY :
Model inflasi dan rintangan
Baik model inflated (biasanya zero-inflated) maupun hurdle bekerja dengan menentukan secara eksplisit dan terpisahPr( Y= 0 ) = π , sehingga DGP menjadi:
Dalam model inflasi,Pr(Y∗= 0 ) > 0 . Dalam model rintangan,Pr(Y∗= 0 ) = 0 . Itulah satu-satunya perbedaan .
Kedua model ini mengarah pada kepadatan dengan bentuk berikut:
dimanasaya adalah fungsi indikator. Yaitu, titik massa hanya ditambahkan pada nol dan dalam hal ini massa itu sederhanaPr( Z= 0 ) = 1 - π . Anda bebas memperkirakanhal langsung, atau untuk mengatur g( π) = Xβ untuk beberapa yang bisa dibalik g seperti fungsi logit. D∗ juga bisa bergantung Xβ . Dalam hal itu, model bekerja dengan "melapiskan" regresi logistik untukZ di bawah model regresi lain untuk Y∗ .
Model yang disensor
Model yang disensor juga menambah massa pada batas. Mereka mencapai ini dengan "memotong" distribusi probabilitas, dan kemudian "mengumpulkan" kelebihan pada batas itu. Cara termudah untuk membuat konsep model ini adalah dalam hal variabel latenY∗∼D∗ dengan CDF FD∗ . KemudianPr(Y∗≤y∗) =FD∗(y∗) . Ini adalah model yang sangat umum; Regresi adalah kasus khusus di manaFD∗ tergantung pada Xβ .
Yang diamatiY diasumsikan terkait dengan Y∗ oleh:
Ini menyiratkan kepadatan bentuk
dan dapat dengan mudah diperpanjang.
Menyatukannya
Lihatlah kepadatannya:
dan perhatikan bahwa keduanya memiliki bentuk yang sama:
karena mereka mencapai tujuan yang sama: membangun kepadatan untukY dengan menambahkan titik massa δ dengan kepadatan untuk beberapa Y∗ . Set inflated / rintangan modelδ melalui proses Bernoulli eksternal. Model yang disensor menentukanδ dengan "memotong" Y∗ pada batas, dan kemudian "menggumpal" massa sisa di batas itu.
Bahkan, Anda selalu dapat mendalilkan model rintangan yang "terlihat seperti" model yang disensor. Pertimbangkan model rintangan di manaD∗ parameter oleh μ = Xβ dan Z parameter oleh g( π) = Xβ . Maka Anda bisa mengaturg=F- 1D∗ . CDF terbalik selalu merupakan fungsi tautan yang valid dalam regresi logistik, dan memang satu alasan mengapa regresi logistik disebut "logistik" adalah karena tautan logit standar sebenarnya adalah CDF terbalik dari distribusi logistik standar.
Anda juga dapat memahami gagasan ini: model regresi Bernoulli dengan tautan CDF terbalik (seperti logit atau probit) dapat dikonseptualisasikan sebagai model variabel laten dengan ambang batas untuk mengamati 1 atau 0. Regresi disensor adalah kasus khusus dari rintangan regresi di mana variabel laten tersiratZ∗ sama dengan Y∗ .
Yang mana yang harus Anda gunakan?
Jika Anda memiliki "cerita sensor" yang meyakinkan, gunakan model yang disensor. Salah satu penggunaan klasik dari model Tobit - nama ekonometrik untuk regresi linier Gaussian yang disensor - adalah untuk memodelkan respons survei yang "berkode atas". Upah sering dilaporkan dengan cara ini, di mana semua upah di atas beberapa cutoff, katakanlah 100.000, hanya diberi kode 100.000. Ini bukan hal yang sama dengan pemotongan , di mana individu dengan upah di atas 100.000 tidak diamati sama sekali . Ini mungkin terjadi dalam survei yang hanya diberikan kepada individu dengan upah di bawah 100.000.
Penggunaan lain untuk menyensor, seperti dijelaskan oleh whuber dalam komentar, adalah ketika Anda melakukan pengukuran dengan instrumen yang memiliki presisi terbatas. Misalkan perangkat pengukur jarak Anda tidak dapat membedakan antara 0 danϵ . Maka Anda bisa menyensor distribusi Anda diϵ .
Kalau tidak, model rintangan atau inflasi adalah pilihan yang aman. Biasanya tidak salah untuk menghipotesiskan proses pembuatan data dua langkah umum, dan ini dapat menawarkan beberapa wawasan tentang data Anda yang mungkin tidak Anda miliki sebelumnya.
Di sisi lain, Anda dapat menggunakan model yang disensor tanpa cerita sensor untuk menciptakan efek yang sama dengan model rintangan tanpa harus menentukan proses "on / off" yang terpisah. Ini adalah pendekatan Sigrist dan Stahel (2010) , yang menyensor distribusi gamma bergeser hanya sebagai cara untuk memodelkan data dalam[ 0 , 1 ] . Makalah itu sangat menarik karena menunjukkan bagaimana modular model-model ini: Anda sebenarnya dapat mengembang nol dari model yang disensor (bagian 3.3), atau Anda dapat memperluas "cerita variabel laten" ke beberapa variabel laten yang tumpang tindih (bagian 3.1).
Pemotongan
Sunting: dihapus, karena solusi ini salah
sumber
Mari saya mulai dengan mengatakan bahwa menerapkan OLS sepenuhnya mungkin, banyak aplikasi kehidupan nyata melakukan ini. Ini menyebabkan (kadang-kadang) masalah yang Anda dapat berakhir dengan nilai-nilai pas kurang dari 0 - saya menganggap ini yang Anda khawatirkan? Tetapi jika hanya sedikit nilai yang dipasang di bawah 0, maka saya tidak akan khawatir tentang hal itu.
Model tobit dapat (seperti yang Anda katakan) digunakan dalam kasus model yang disensor atau terpotong. Tapi itu juga berlaku langsung ke kasing Anda, bahkan model tobit ditemukan kasing Anda. Y "menumpuk" pada 0, dan sebaliknya terus menerus kasar. Yang perlu diingat adalah bahwa model tobit sulit ditafsirkan, Anda harus bergantung pada APE dan PEA. Lihat komentar di bawah.
Anda juga bisa menerapkan model regresi posisi, yang memiliki interpretasi hampir OLS - tetapi biasanya digunakan dengan data jumlah. Wooldridge 2012 CHAP 17, berisi diskusi yang sangat rapi tentang subjek.
sumber