R में कोई व्यक्ति अनुभवजन्य रूप से कैसे प्रदर्शित कर सकता है कि A-BIC में कौन-सी क्रॉस-मान्यता विधियाँ समतुल्य हैं?


26

इस साइट पर कहीं और एक सवाल में , कई जवाबों में उल्लेख किया गया है कि एआईसी छुट्टी-एक-आउट (एलओयू) क्रॉस-मान्यता के बराबर है और बीआईसी के-फोल्ड क्रॉस सत्यापन के बराबर है। क्या 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 से 10000 तक के बीजों की एक सूची प्रदान की है जिसमें AIC और BIC असहमत हैं। यह उपलब्ध बीजों के माध्यम से एक सरल खोज के द्वारा किया गया था, लेकिन यदि कोई व्यक्ति डेटा उत्पन्न करने का एक तरीका प्रदान कर सकता है, जो इन दो सूचना मानदंडों से विशेष रूप से जानकारीपूर्ण हो सकता है, तो यह अलग-अलग उत्तर देगा।

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

एक तरफ के रूप में, मैंने इन बीजों को ऑर्डर करने के बारे में सोचा कि किस हद तक एआईसी और बीआईसी असहमत हैं, जिसे मैंने एआईसी और बीआईसी के पूर्ण मतभेदों के योग के रूप में मात्रात्मक बनाने की कोशिश की है। उदाहरण के लिए,

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)

हालांकि ऐसे मामलों में जहां एआईसी और बीआईसी असहमत थे, गणना की गई असहमति मूल्य हमेशा एक ही था (और नमूना का एक कार्य है)। यह देखते हुए कि एआईसी और बीआईसी की गणना कैसे की जाती है, मैं देख सकता हूं कि यह मामला कम्प्यूटेशनल रूप से क्यों हो सकता है, लेकिन मुझे यकीन नहीं है कि यह वैचारिक रूप से मामला क्यों होगा। अगर कोई उस मुद्दे को भी स्पष्ट कर सकता है, तो मैं इसकी सराहना करूंगा।


+1 कोड लिखना सरल होगा, फिर भी मैं एक स्पष्ट, चित्रमय डेटासेट देखने में बहुत रुचि रखता हूं।

मुझे यकीन नहीं है कि सभी को एक स्पष्ट और निराशाजनक डेटासेट में रहने की आवश्यकता होगी, लेकिन मैंने एक नमूना डेटासेट शामिल करने का प्रयास किया है।
रुसलपिएरेस

तो देखें: आपने जो प्रदान किया वह एक बेकार सेट का एक उदाहरण है, क्योंकि BIC और AIC एक ही परिणाम देते हैं: AIC के लिए 340 v। 342 और BIC के लिए 349 v। 353 - दोनों ही मामलों में good.model जीतता है। उस अभिसरण के साथ पूरा विचार यह है कि कुछ क्रॉस-वैरिफिकेशन उसी मॉडल का चयन करेंगे जो इसके अनुरूप आईसी के रूप में होगा।

मैंने एक साधारण स्कैनिंग की है और उदाहरण के लिए बीज 76 ICs असहमत है।

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
    }

... अवशेषों में मूल्यों का उत्पादन माना जाता है जो एआईसी से संबंधित है। उपर्युक्त विस्तृत एलओओ लूप के प्रत्येक पुनरावृत्ति से चुकता अवशिष्ट के योग में उल्लेखनीय है। एआईसी के उल्लेखनीय सूचक। r ^ 2 = .9776। लेकिन, कहीं और एक योगदानकर्ता ने सुझाव दिया कि LOO को एआईएमपी के समान होना चाहिए (कम से कम रैखिक मॉडल के लिए), इसलिए मैं थोड़ा निराश हूं कि r ^ 2 करीब नहीं है। जाहिर तौर पर यह वास्तव में जवाब नहीं है - किसी को बेहतर उत्तर देने के प्रयास के लिए प्रोत्साहित करने के लिए अतिरिक्त कोड की तरह अधिक।

परिशिष्ट: चूंकि फिक्स्ड सैंपल साइज के मॉडल के लिए एआईसी और बीआईसी केवल एक स्थिरांक से भिन्न होते हैं, बीआईसी टू स्क्वायर्ड रेसिड्यूल्स का सहसंबंध एक समान है, क्योंकि एआईसी की कोरोलाइज्ड अवशिष्ट अवशिष्टता है, इसलिए जो दृष्टिकोण ऊपर लिया गया है वह फलहीन प्रतीत होता है।


ध्यान दें कि यह इनाम के लिए आपका स्वीकृत उत्तर होगा (यदि आप एक उत्तर का चयन नहीं करते हैं तो इनाम स्वचालित रूप से सबसे अधिक अंकों के साथ उत्तर का चयन करें)
girard

1
अच्छी तरह से अपने आप को इनाम देने के लिए मूर्खतापूर्ण लगता है - लेकिन किसी और ने जवाब नहीं दिया है।
russellpierce
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.