Saya mencoba mensimulasikan dataset yang cocok dengan data empiris yang saya miliki, tetapi saya tidak yakin bagaimana memperkirakan kesalahan dalam data asli. Data empiris mencakup heteroskedastisitas, tetapi saya tidak tertarik untuk mengubahnya, tetapi menggunakan model linier dengan istilah kesalahan untuk mereproduksi simulasi data empiris.
Sebagai contoh, katakanlah saya memiliki beberapa dataset empiris dan model:
n=rep(1:100,2)
a=0
b = 1
sigma2 = n^1.3
eps = rnorm(n,mean=0,sd=sqrt(sigma2))
y=a+b*n + eps
mod <- lm(y ~ n)
menggunakan plot(n,y)
kita mendapatkan yang berikut ini.
Namun, jika saya mencoba mensimulasikan data, simulate(mod)
heteroskedastisitas dihapus dan tidak ditangkap oleh model.
Saya dapat menggunakan model kuadrat terkecil umum
VMat <- varFixed(~n)
mod2 = gls(y ~ n, weights = VMat)
yang memberikan model fit yang lebih baik berdasarkan AIC, tapi saya tidak tahu bagaimana mensimulasikan data menggunakan output.
Pertanyaan saya adalah, bagaimana cara membuat model yang akan memungkinkan saya untuk mensimulasikan data agar sesuai dengan data asli, empiris (n dan y di atas). Secara khusus, saya butuh cara untuk memperkirakan sigma2, kesalahan, menggunakan salah satu menggunakan model?
sumber
Jawaban:
Untuk mensimulasikan data dengan varians kesalahan yang bervariasi, Anda perlu menentukan proses pembuatan data untuk varians kesalahan. Seperti yang telah ditunjukkan dalam komentar, Anda melakukan itu ketika Anda menghasilkan data asli Anda. Jika Anda memiliki data nyata dan ingin mencoba ini, Anda hanya perlu mengidentifikasi fungsi yang menentukan bagaimana varians residual tergantung pada kovariat Anda. Cara standar untuk melakukan itu adalah agar sesuai dengan model Anda, periksa apakah itu masuk akal (selain heteroskedastisitas), dan simpan residu. Residu tersebut menjadi variabel Y dari model baru. Di bawah ini saya telah melakukannya untuk proses pembuatan data Anda. (Saya tidak melihat di mana Anda mengatur benih acak, jadi ini tidak akan benar-benar menjadi data yang sama, tetapi harus serupa, dan Anda dapat mereproduksi milik saya dengan menggunakan benih saya.)
Perhatikan bahwa
R
' plot.lm' akan memberi Anda plot (lih., Di sini ) dari akar kuadrat dari nilai absolut residu, yang dilapis dengan bantuan lowess, yang tepat seperti yang Anda butuhkan. (Jika Anda memiliki banyak kovariat, Anda mungkin ingin menilai ini terhadap masing-masing kovariat secara terpisah.) Ada sedikit petunjuk kurva, tetapi ini terlihat seperti garis lurus yang berfungsi baik dalam menyesuaikan data. Jadi mari kita secara eksplisit menyesuaikan model itu:Kita tidak perlu khawatir bahwa varians residual tampaknya meningkat dalam plot skala lokasi untuk model ini juga — yang pada dasarnya harus terjadi. Ada lagi sedikit tanda kurva, sehingga kita dapat mencoba menyesuaikan istilah kuadrat dan melihat apakah itu membantu (tetapi tidak):
Jika kami puas dengan ini, kami sekarang dapat menggunakan proses ini sebagai tambahan untuk mensimulasikan data.
Perhatikan bahwa proses ini tidak lagi dijamin untuk menemukan proses pembuatan data yang sebenarnya daripada metode statistik lainnya. Anda menggunakan fungsi non-linear untuk menghasilkan SD kesalahan, dan kami memperkirakannya dengan fungsi linear. Jika Anda benar-benar mengetahui proses pembuatan data sebenarnya a-priori (seperti dalam kasus ini, karena Anda mensimulasikan data asli), Anda sebaiknya menggunakannya. Anda dapat memutuskan apakah perkiraan di sini cukup baik untuk tujuan Anda. Namun, kami biasanya tidak mengetahui proses pembuatan data yang sebenarnya, dan berdasarkan pada pisau Occam, gunakan fungsi paling sederhana yang cukup sesuai dengan data yang kami berikan pada jumlah informasi yang tersedia. Anda juga dapat mencoba pendekatan splines atau pelamun jika Anda mau. Distribusi bivariat terlihat cukup mirip dengan saya,
sumber
Anda perlu memodelkan heteroskedastisitas. Salah satu pendekatan adalah melalui paket R (CRAN)
dglm
, model linear umum dispersi. Ini adalah perpanjangan dari glm yang, di samping biasaglm
, cocok glm kedua untuk dispersi dari residu dari glm pertama. Saya tidak punya pengalaman dengan model seperti itu, tetapi mereka tampak menjanjikan ... Berikut adalah beberapa kode:Plot simulasi ditunjukkan di bawah ini:
Plot memang terlihat seperti simulasi telah menggunakan varians yang diperkirakan, tapi saya tidak yakin, karena fungsi mensimulasikan () tidak memiliki metode untuk dglm ...
(Kemungkinan lain untuk melihat ke dalam, adalah menggunakan
R
paketgamlss
, yang menggunakan pendekatan lain untuk memodelkan varians sebagai fungsi dari kovariabel.)sumber