Apa perbedaan antara AIC () dan extractAIC () dalam R?

11

Dokumentasi R untuk keduanya tidak menjelaskan banyak hal. Semua yang bisa saya dapatkan dari tautan ini adalah bahwa menggunakan salah satu dari keduanya harus baik-baik saja. Yang tidak saya dapatkan adalah mengapa mereka tidak sama.

Fakta: Fungsi regresi bertahap di R, step()menggunakan extractAIC().

Menariknya, menjalankan lm()model dan model glm()'null' (hanya intersep) pada set data 'mtcars dari R memberikan hasil yang berbeda untuk AICdan extractAIC().

> null.glm = glm(mtcars$mpg~1)
> null.lm = lm(mtcars$mpg~1)

> AIC(null.glm)
[1] 208.7555
> AIC(null.lm)
[1] 208.7555
> extractAIC(null.glm)
[1]   1.0000 208.7555
> extractAIC(null.lm)
[1]   1.0000 115.9434

Sangat aneh, mengingat kedua model di atas sama, dan AIC()memberikan hasil yang sama untuk keduanya.

Adakah yang bisa menjelaskan masalah ini?

Sudip Sinha
sumber

Jawaban:

6

Menurut, untuk bantuan untuk dua fungsi ini (gunakan? AIC dan? ExtractAIC) ini diharapkan.

Perhatikan bahwa AIC hanya didefinisikan hingga konstanta aditif, karena ini juga merupakan kasus untuk log-likelihood. Ini berarti Anda harus memeriksa apakah

extractAIC(full.modell) - extractAIC(null.modell)

dan

AIC(full.modell) - AIC(null.modell)

berikan hasil yang sama. Selama mereka melakukannya, kedua fungsi tersebut setara untuk semua tujuan praktis.

Erik
sumber
2
Aku mungkin kehilangan sesuatu, tapi aku masih tidak mengerti mengapa extractAIC(null.lm) != AIC(null.lm)sementara extractAIC(null.glm) == AIC(null.glm)meskipun null.lmadalah model yang sama seperti null.glm. Bisakah Anda sedikit memperluas jawaban?
smillig
2
@smillig extractAICmenggunakan metode yang berbeda untuk lmdan glmcocok, yaitu, extractAIC.lmdan extractAIC.glm. Anda dapat menggunakannya getAnywhereuntuk mempelajari kode mereka. AICmenggunakan metode yang sama untuk keduanya.
Roland
Saya memiliki beberapa pasang model (dengan beberapa prediktor) yang kedua fungsinya memberikan hasil yang berbeda. Model 1: y = x1 + x2, Model 2: y = z + x1 + x2 * z. extractAIC()memberikan nilai yang lebih rendah (negatif) untuk Model 1, sementara AIC memberikan nilai yang lebih rendah (positif) untuk Model 2.
Maxim.K
1
@ Maxim.K Anda memberikan sedikit informasi tentang jenis variabel dan model yang digunakan. Jika Anda melakukannya dan ada beberapa perbedaan untuk pertanyaan ini, mungkin ada baiknya untuk memposting ini sebagai pertanyaan baru. Sulit dikatakan, tanpa mengetahui detailnya.
Erik
@Erik Saya ragu akan bernilai banyak jika saya mengatakan bahwa z adalah kontinu dan x2 adalah kategorikal (dummified). Orang akan membutuhkan data untuk mereproduksi dan saya tidak bisa mempublikasikannya, saya khawatir.
Maxim.K