Menghitung AIC "dengan tangan" di R


15

Saya telah mencoba menghitung AIC dari regresi linier dalam R tetapi tanpa menggunakan AICfungsi, seperti ini:

lm_mtcars <- lm(mpg ~ drat, mtcars)

nrow(mtcars)*(log((sum(lm_mtcars$residuals^2)/nrow(mtcars))))+(length(lm_mtcars$coefficients)*2)
[1] 97.98786

Namun, AICmemberikan nilai berbeda:

AIC(lm_mtcars)
[1] 190.7999

Bisakah seseorang memberi tahu saya apa yang saya lakukan salah?


5
(tanpa memeriksa jawaban Anda): Anda belum tentu melakukan kesalahan, karena kemungkinan sebenarnya hanya didefinisikan hingga konstanta multiplikasi; dua orang dapat menghitung log-likelihood dan mendapatkan angka yang berbeda (tetapi perbedaan log-likelihood adalah sama).
— Glen_b -Reinstate Monica

1
Jawaban Hong Oois terkait dengan pertanyaan ini, saya pikir. Rumus yang AICdigunakan fungsi adalah -2*as.numeric(logLik(lm_mtcars))+2*(length(lm_mtcars$coefficients)+1).
— COOLSerdash

luciano: "+1" dalam rumus itu @COOLSerdash menunjuk ke yang muncul dari istilah parameter varians. Perhatikan juga bahwa fungsi logLikmengatakan bahwa untuk lmmodel itu termasuk 'semua konstanta' ... jadi akan ada log(2*pi)di sana di suatu tempat
— Glen_b -Reinstate Monica

1
@ Glen_b: Mengapa mengatakan kemungkinan hanya didefinisikan hingga konstanta multiplikasi? Lagi pula, ketika membandingkan model non-bersarang dari keluarga distribusi yang berbeda (misalnya dengan AIC, atau dengan tes Cox), Anda perlu mengingat konstanta itu.
— Scortchi

@ Scortchi, definisi itu bukan milikku! Anda harus mengambilnya dengan RAFisher. Sudah seperti itu sejak awal, saya pikir (1921). Itu masih didefinisikan seperti itu, setidaknya dalam kasus berkelanjutan, lihat di sini , misalnya, pada kalimat yang dimulai 'Lebih tepatnya,'.
— Glen_b -Reinstate Monica

Jawaban:


18

Perhatikan bahwa bantuan pada fungsi logLikdalam R mengatakan bahwa untuk lmmodel itu termasuk 'semua konstanta' ... sehingga akan ada log(2*pi)di sana di suatu tempat, serta istilah konstan lain untuk eksponen dalam kemungkinan. Juga, Anda tidak bisa lupa untuk menghitung fakta bahwa adalah parameter.σ2

L(μ^,σ^)=(12πsn2)nexp⁡(−12∑i(ei2/sn2))

−2log⁡L=nlog⁡(2π)+nlog⁡sn2+∑i(ei2/sn2)

=n[log⁡(2π)+log⁡sn2+1]

AIC=2p−2log⁡L

tetapi perhatikan bahwa untuk model dengan 1 variabel independen, p = 3 (koefisien x, konstanta dan )σ2

Yang artinya ini adalah bagaimana Anda mendapatkan jawaban mereka:

nrow(mtcars)*(log(2*pi)+1+log((sum(lm_mtcars$residuals^2)/nrow(mtcars))))
       +((length(lm_mtcars$coefficients)+1)*2)

Mengapa dalam perhitungan Anda hanya membagi dengan n dan bukan n - p ? s2nn−p
— Luke Thorburn

1
−2log⁡L(θ^)+2pθθ^nσ^2σ2
— Glen_b -Reinstate Monica

Apakah ada kesalahan ketik pada persamaan kedua? Haruskah Ok saya mengerti, Anda menggunakan √−2log⁡L=nlog⁡(2π)+nlog⁡sn+∑i(ei2/sn2)2πsn2
— Rhody

10

AIC2k−2log⁡LLknlog⁡Srn+2(k−1)Srn

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.