การคำนวณ AIC“ ด้วยมือ” ใน R


15

ฉันได้ลองคำนวณ AIC ของการถดถอยเชิงเส้นใน R แต่ไม่ได้ใช้AICฟังก์ชันเช่นนี้

lm_mtcars <- lm(mpg ~ drat, mtcars)

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

อย่างไรก็ตามAICให้ค่าที่แตกต่าง:

AIC(lm_mtcars)
[1] 190.7999

มีคนบอกฉันว่าฉันทำอะไรผิดหรือเปล่า?


5
(ยังไม่ได้ตรวจสอบคำตอบของคุณ): คุณไม่จำเป็นต้องทำสิ่งใดผิดเนื่องจากความเป็นไปได้นั้นจะถูกกำหนดเป็นค่าคงที่แบบคูณเท่านั้น คนสองคนสามารถคำนวณความเป็นไปได้ของการบันทึกและรับตัวเลขที่แตกต่างกัน (แต่ความแตกต่างในความเป็นไปได้ของการบันทึกจะเท่ากัน)
Glen_b -Reinstate Monica

1
คำตอบ Hong Ooisเกี่ยวข้องกับคำถามนี้ฉันคิดว่า สูตรที่ฟังก์ชั่นใช้เป็นAIC -2*as.numeric(logLik(lm_mtcars))+2*(length(lm_mtcars$coefficients)+1)
COOLSerdash

luciano: "+1" ในสูตรนั้น @COOLSerdash ชี้ว่าเกิดจากคำพารามิเตอร์แปรปรวน โปรดทราบว่าฟังก์ชั่นlogLikบอกว่าสำหรับlmรุ่นที่มี 'ค่าคงที่ทั้งหมด' ... ดังนั้นจะlog(2*pi)มีที่ใดที่หนึ่ง
Glen_b

1
@Glen_b: ทำไมพูดถึงความน่าจะเป็นของการกำหนดค่าคงที่ทวีคูณเท่านั้น? ท้ายที่สุดเมื่อเปรียบเทียบโมเดลที่ไม่ซ้อนกันจากตระกูลการกระจายที่แตกต่างกัน (เช่นกับ AIC หรือกับการทดสอบ Cox) คุณต้องจำค่าคงที่นั้น
Scortchi - Reinstate Monica

@Scortchi ความหมายไม่ใช่ของฉัน! คุณจะต้องใช้มันกับ RAFisher มันเป็นอย่างนั้นตั้งแต่เริ่มต้นฉันคิดว่า (1921) อย่างน้อยก็ในกรณีต่อเนื่องดูที่นี่ตัวอย่างเช่นในประโยคที่เริ่มต้นว่า 'แม่นยำยิ่งขึ้น'
Glen_b -Reinstate Monica

คำตอบ:


18

โปรดทราบว่าความช่วยเหลือในฟังก์ชั่นlogLikใน R บอกว่าสำหรับlmรุ่นที่มี 'ค่าคงที่ทั้งหมด' ... ดังนั้นจะมีlog(2*pi)ในบางแห่งเช่นเดียวกับคำคงที่อื่นสำหรับเลขชี้กำลังในโอกาส นอกจากนี้คุณไม่สามารถลืมความจริงที่ว่าเป็นพารามิเตอร์ได้σ2

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

2logL=nlog(2π)+nlogsn2+i(ei2/sn2)

=n[log(2π)+logsn2+1]

AIC=2p2logL

แต่โปรดทราบว่าสำหรับรุ่นที่มีตัวแปรอิสระ 1 ตัว p = 3 (ค่าสัมประสิทธิ์ x ค่าคงที่และσ2 )

นี่หมายความว่าคุณจะได้รับคำตอบอย่างไร:

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

s2nnp

1
2logL(θ^)+2pθθ^nσ^2σ2และอื่น ๆ ไม่ได้จริงๆคอมพิวเตอร์ AIC - ในผลที่คุณต้องการจะปรับครั้งที่สองสำหรับผลของพารามิเตอร์ที่เหมาะสม (ใช่หลายคนทำผิด)
Glen_b -Reinstate Monica

2logL=nlog(2π)+nlogsn+i(ei2/sn2)2πsn2

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.