หนึ่งสามารถสังเกตุเห็นได้ชัดใน R ซึ่งวิธีการตรวจสอบข้ามที่ AIC และ BIC จะเทียบเท่าได้อย่างไร?


26

ในคำถามอื่น ๆ ในไซต์นี้คำตอบหลายข้อกล่าวว่า AIC นั้นเทียบเท่ากับการตรวจสอบความถูกต้องแบบ cross-one-out (LOO) และ BIC นั้นเทียบเท่ากับการตรวจสอบความถูกต้องข้ามแบบ K-fold มีวิธีที่จะแสดงให้เห็นถึงสังเกตุนี้ใน R หรือไม่ว่าเทคนิคที่เกี่ยวข้องใน LOO และ K-fold นั้นชัดเจนและแสดงให้เห็นว่าเทียบเท่ากับค่า AIC และ BIC หรือไม่? รหัสความคิดเห็นดีจะเป็นประโยชน์ในเรื่องนี้ นอกจากนี้ในการสาธิต BIC โปรดใช้แพ็คเกจ lme4 ดูตัวอย่างชุดข้อมูลด้านล่าง ...

library(lme4) #for the BIC function

generate.data <- function(seed)
{
    set.seed(seed) #Set a seed so the results are consistent (I hope)
    a <- rnorm(60) #predictor
    b <- rnorm(60) #predictor
    c <- rnorm(60) #predictor
    y <- rnorm(60)*3.5+a+b #the outcome is really a function of predictor a and b but not predictor c
    data <- data.frame(y,a,b,c) 
    return(data)    
}

data <- generate.data(76)
good.model <- lm(y ~ a+b,data=data)
bad.model <- lm(y ~ a+b+c,data=data)
AIC(good.model)
BIC(logLik(good.model))
AIC(bad.model)
BIC(logLik(bad.model))

ต่อความคิดเห็นก่อนหน้านี้ด้านล่างฉันได้ให้รายชื่อเมล็ดพันธุ์จาก 1 ถึง 10,000 ที่ AIC และ BIC ไม่เห็นด้วย สิ่งนี้ทำได้โดยการค้นหาอย่างง่ายผ่านเมล็ดที่มีอยู่ แต่ถ้ามีใครสามารถหาวิธีสร้างข้อมูลที่มีแนวโน้มที่จะสร้างคำตอบที่แตกต่างจากเกณฑ์ข้อมูลทั้งสองนี้

notable.seeds <- read.csv("http://student.ucr.edu/~rpier001/res.csv")$seed

นอกจากนี้ฉันคิดเกี่ยวกับการสั่งซื้อเมล็ดพันธุ์เหล่านี้ตามขอบเขตที่ AIC และ BIC ไม่เห็นด้วยซึ่งฉันได้ลองหาปริมาณเป็นผลรวมของความแตกต่างที่แน่นอนของ AIC และ BIC ตัวอย่างเช่น,

AICDiff <- AIC(bad.model) - AIC(good.model) 
BICDiff <- BIC(logLik(bad.model)) - BIC(logLik(good.model))
disagreement <- sum(abs(c(AICDiff,BICDiff)))

เมื่อตัวชี้วัดที่ไม่เห็นด้วยของฉันมีผลบังคับใช้ก็ต่อเมื่อการสังเกตนั้นเป็นที่น่าสังเกต ตัวอย่างเช่น,

are.diff <- sum(sign(c(AICDiff,BICDiff)))
notable <- ifelse(are.diff == 0 & AICDiff != 0,TRUE,FALSE)

อย่างไรก็ตามในกรณีที่ AIC และ BIC ไม่เห็นด้วยค่าความขัดแย้งที่คำนวณได้จะเหมือนกันเสมอ (และเป็นฟังก์ชันของขนาดตัวอย่าง) เมื่อมองย้อนกลับไปที่การคำนวณ AIC และ BIC ฉันสามารถดูสาเหตุของคดีนี้ได้ แต่ฉันไม่แน่ใจว่าทำไมมันจึงเป็นกรณีของแนวคิด หากใครบางคนสามารถอธิบายปัญหานั้นได้เช่นกันฉันก็ยินดี


+1 รหัสนั้นง่ายต่อการเขียน แต่ฉันสนใจที่จะเห็นชุดข้อมูลที่ชัดเจนและเป็นตัวอย่าง

ฉันไม่แน่ใจว่าสิ่งที่ทุกคนจะต้องอยู่ในชุดข้อมูลที่ชัดเจนและเป็นตัวอย่าง แต่ฉันได้พยายามรวมชุดข้อมูลตัวอย่าง
russellpierce

ดูสิ: สิ่งที่คุณให้ไว้เป็นตัวอย่างของเซตที่ไร้ประโยชน์เพราะ BIC และ AIC ให้ผลลัพธ์เหมือนกัน: 340 v. 342 สำหรับ AIC และ 349 v. 353 สำหรับ BIC - ดีมากรุ่นนี้ชนะทั้งสองกรณี แนวคิดทั้งหมดที่เกิดจากการลู่เข้านั้นก็คือการตรวจสอบข้ามบางอย่างจะเลือกรูปแบบเดียวกันกับ IC ที่สอดคล้องกัน

ฉันทำการสแกนง่าย ๆ และสำหรับเมล็ด 76 ไม่เห็นด้วยกับไอซี

1
ว้าวนี่คือสิ่งที่ยากยิ่งกว่าที่จะได้รับฉันกลัว ประเด็นทั่วไปของฉันในการสนทนาทั้งหมดคือการรวมกันของทฤษฎีบทเหล่านั้นอ่อนแอเกินไปดังนั้นความแตกต่างอาจเกิดขึ้นจากความผันผวนแบบสุ่ม (และมันไม่ทำงานสำหรับการเรียนรู้ของเครื่อง แต่ฉันหวังว่ามันชัดเจน)

คำตอบ:


5

ในความพยายามที่จะบางส่วนตอบคำถามของฉันเองฉันอ่านวิกิพีเดียคำอธิบายของการลาหนึ่งออกตรวจสอบข้าม

เกี่ยวข้องกับการใช้การสังเกตเดียวจากตัวอย่างดั้งเดิมเป็นข้อมูลการตรวจสอบและการสังเกตที่เหลือเป็นข้อมูลการฝึกอบรม สิ่งนี้ซ้ำหลายครั้งซึ่งการสังเกตแต่ละครั้งในตัวอย่างจะใช้เพียงครั้งเดียวเป็นข้อมูลการตรวจสอบ

ในรหัส R ฉันสงสัยว่าจะมีความหมายเช่นนี้ ...

resid <- rep(NA, Nobs) 
for (lcv in 1:Nobs)
    {
        data.loo <- data[-lcv,] #drop the data point that will be used for validation
        loo.model <- lm(y ~ a+b,data=data.loo) #construct a model without that data point
            resid[lcv] <- data[lcv,"y"] - (coef(loo.model)[1] + coef(loo.model)[2]*data[lcv,"a"]+coef(loo.model)[3]*data[lcv,"b"]) #compare the observed value to the value predicted by the loo model for each possible observation, and store that value
    }

... ควรจะให้ค่าที่เหลือที่เกี่ยวข้องกับ AIC ในทางปฏิบัติผลรวมของค่าตกค้างกำลังสองจากการวนซ้ำในแต่ละลูปที่มีรายละเอียดด้านบนเป็นตัวทำนายที่ดีของ AIC สำหรับความโดดเด่นของเมล็ด, r ^ 2 = .9776 แต่ที่อื่นมีส่วนร่วมแนะนำให้ LOO ควร asymptotically เทียบเท่ากับ AIC (อย่างน้อยสำหรับแบบจำลองเชิงเส้น) ดังนั้นฉันผิดหวังเล็กน้อยที่ r ^ 2 ไม่ใกล้เคียงกับ 1 แน่นอนว่านี่ไม่ใช่คำตอบจริงๆ - ชอบรหัสเพิ่มเติมเพื่อพยายามกระตุ้นให้ใครบางคนพยายามให้คำตอบที่ดีกว่า

ภาคผนวก: เนื่องจาก AIC และ BIC สำหรับแบบจำลองของขนาดตัวอย่างคงที่จะแปรผันตามค่าคงที่ความสัมพันธ์ของ BIC กับค่าคงที่กำลังสองจึงเหมือนกับ Correaltion ของ AIC ต่อค่าเศษกำลังสองดังนั้นวิธีที่ฉันใช้ข้างต้นดูเหมือนจะไร้ผล


โปรดทราบว่านี่จะเป็นคำตอบที่คุณยอมรับสำหรับค่าหัว (ในกรณีที่คุณไม่เลือกคำตอบค่าหัวจะเลือกคำตอบที่มีคะแนนมากที่สุดโดยอัตโนมัติ)
robin girard

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