मैं लॉग-सामान्य डेटा सेट के माध्यम के लिए एक विश्वास अंतराल की गणना कैसे करूं?


19

मैंने कई स्थानों पर सुना / देखा है कि आप डेटा सेट को किसी ऐसी चीज़ में बदल सकते हैं जो सामान्य है-प्रत्येक नमूने के लघुगणक को ले जाकर वितरित किया जाता है, रूपांतरित डेटा के लिए विश्वास अंतराल की गणना करें, और उलटा ऑपरेशन का उपयोग करके आत्मविश्वास अंतराल को वापस बदलें। (उदाहरण के लिए, निचले और ऊपरी सीमा की शक्ति को क्रमशः , )।log10

हालाँकि, मुझे इस विधि पर थोड़ा संदेह है, क्योंकि यह केवल माध्य के लिए काम नहीं करता है:10mean(log10(X))mean(X)

ऐसा करने का सही तरीका क्या है? यदि यह माध्य के लिए काम नहीं करता है, तो यह संभवतः मीन के लिए विश्वास अंतराल के लिए कैसे काम कर सकता है?


3
तुम बिलकुल सही हो। यह दृष्टिकोण आम तौर पर काम नहीं करता है और अक्सर आत्मविश्वास अंतराल पैदा करता है जिसमें जनसंख्या का मतलब या नमूना का मतलब भी शामिल नहीं होता है। यहाँ इस पर कुछ चर्चा की गई है: amstat.org/publications/jse/v13n1/olsson.html यह कोई जवाब नहीं है, क्योंकि मैंने इस मामले पर गौर नहीं किया था, जो वास्तव में विस्तार से लिंक पर टिप्पणी करने के लिए पर्याप्त था।
एरिक

3
इस समस्या का एक क्लासिक समाधान है: projecteuclid.org/… । कोड सहित कुछ अन्य समाधान epa.gov/oswer/riskassessment/pdf/ucl.pdf पर उपलब्ध कराए गए हैं- लेकिन इसे नमक के भारी दाने के साथ पढ़ें, क्योंकि कम से कम एक विधि वहाँ वर्णित है ("Chebyshevv असमानता विधि") सिर्फ सादा गलत है।
व्हिबर

जवाबों:


11

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

बूटस्ट्रैप

MLE के लिए

इस मामले में, नमूने के लिए का MLE हैं(μ,σ)(x1,...,xn)

μ^=1nj=1nlog(xj);σ^2=1nj=1n(log(xj)μ^)2.

फिर, माले का MLE । फिर से शुरू करके हम का बूटस्ट्रैप नमूना प्राप्त कर सकते हैं और, इसका उपयोग करके, हम कई बूटस्ट्रैप विश्वास अंतराल की गणना कर सकते हैं। निम्न कोड दिखाता है कि इन्हें कैसे प्राप्त किया जाए।δ^=exp(μ^+σ^2/2)δ^R

rm(list=ls())
library(boot)

set.seed(1)

# Simulated data
data0 = exp(rnorm(100))

# Statistic (MLE)

mle = function(dat){
m = mean(log(dat))
s = mean((log(dat)-m)^2)
return(exp(m+s/2))
}

# Bootstrap
boots.out = boot(data=data0, statistic=function(d, ind){mle(d[ind])}, R = 10000)
plot(density(boots.out$t))

# 4 types of Bootstrap confidence intervals
boot.ci(boots.out, conf = 0.95, type = "all")

नमूना मतलब के लिए

अब, MLE के बजाय अनुमानक पर विचार कर रहा है। अन्य प्रकार के अनुमानक भी माने जा सकते हैं।δ~=x¯

rm(list=ls())
library(boot)

set.seed(1)

# Simulated data
data0 = exp(rnorm(100))

# Statistic (MLE)

samp.mean = function(dat) return(mean(dat))

# Bootstrap
boots.out = boot(data=data0, statistic=function(d, ind){samp.mean(d[ind])}, R = 10000)
plot(density(boots.out$t))

# 4 types of Bootstrap confidence intervals
boot.ci(boots.out, conf = 0.95, type = "all")

प्रोफ़ाइल संभावना

संभावना और प्रोफाइल संभावना कार्यों की परिभाषा के लिए, देखें । इस प्रकार की संभावना वाली संपत्ति का उपयोग करके हम इस प्रकार पुनर्संरचना कर सकते हैं , जहां और फिर संख्यात्मक रूप से गणना करें प्रोफ़ाइल की संभावना ।(μ,σ)(δ,σ)δ=exp(μ+σ2/2)δ

Rp(δ)=supσL(δ,σ)supδ,σL(δ,σ).

यह फ़ंक्शन में मान लेता है , स्तर अंतराल में का अनुमानित आत्मविश्वास है । हम इस संपत्ति का उपयोग लिए एक विश्वास अंतराल के निर्माण के लिए करने जा रहे हैं । निम्नलिखित कोड दिखाता है कि इस अंतराल को कैसे प्राप्त किया जाए। ।(0,1]0.147 95%δR

set.seed(1)

# Simulated data
data0 = exp(rnorm(100))

# Log likelihood
ll = function(mu,sigma) return( sum(log(dlnorm(data0,mu,sigma))))

# Profile likelihood
Rp = function(delta){
temp = function(sigma) return( sum(log(dlnorm(data0,log(delta)-0.5*sigma^2,sigma)) ))
max=exp(optimize(temp,c(0.25,1.5),maximum=TRUE)$objective     -ll(mean(log(data0)),sqrt(mean((log(data0)-mean(log(data0)))^2))))
return(max)
}

vec = seq(1.2,2.5,0.001)
rvec = lapply(vec,Rp)
plot(vec,rvec,type="l")

# Profile confidence intervals
tr = function(delta) return(Rp(delta)-0.147)
c(uniroot(tr,c(1.2,1.6))$root,uniroot(tr,c(2,2.3))$root)

_ बायेसियन

इस खंड में, मेट्रोपोलिस-हेस्टिंग्स के नमूने के आधार पर एक वैकल्पिक एल्गोरिथ्म और पूर्व में जेफ्री के उपयोग के लिए, लिए एक विश्वसनीयता अंतराल की गणना के लिए प्रस्तुत किया गया है।δ

याद रखें कि पहले जेफ्रीज के लिए एक lognormal मॉडल में है(μ,σ)

π(μ,σ)σ2,

और यह कि यह पूर्व पुनर्संरचना के तहत अपरिवर्तनीय है। यह पूर्व अनुचित है, लेकिन मापदंडों का पीछे होना उचित है यदि नमूना आकार । निम्न कोड दिखाता है कि इस बायेसियन मॉडल का उपयोग करके 95% विश्वसनीयता अंतराल कैसे प्राप्त करें।n2R

library(mcmc)

set.seed(1)

# Simulated data
data0 = exp(rnorm(100))

# Log posterior
lp = function(par){
if(par[2]>0) return( sum(log(dlnorm(data0,par[1],par[2]))) - 2*log(par[2]))
else return(-Inf)
}

# Metropolis-Hastings
NMH = 260000
out = metrop(lp, scale = 0.175, initial = c(0.1,0.8), nbatch = NMH)

#Acceptance rate
out$acc

deltap = exp(  out$batch[,1][seq(10000,NMH,25)] + 0.5*(out$batch[,2][seq(10000,NMH,25)])^2  )

plot(density(deltap))

# 95% credibility interval
c(quantile(deltap,0.025),quantile(deltap,0.975))

ध्यान दें कि वे बहुत समान हैं।


1
(+1) मुझे लगता है कि डिस्ट्रामॉड आर पैकेज के साथ अधिकतम-संभावना सिद्धांत के आधार पर आप विश्वास अंतराल भी प्राप्त कर सकते हैं
स्टीफन लॉरेंट

@ StéphaneLaurent जानकारी के लिए धन्यवाद। मैं नए से पहले आपके कोड का परिणाम देखना चाहूंगा। मुझे आपके द्वारा उपयोग किए जा रहे कमांड और पैकेज के बारे में जानकारी नहीं थी।

4
सुंदर प्रतिक्रिया @Procrastinator। एक अन्य दृष्टिकोण है स्मीयरिंग एसेटर, जो मूल पैमाने पर पूर्वानुमानित मूल्यों को प्राप्त करने के लिए लॉग स्केल पर औसत से सभी अवशिष्टों का उपयोग करता है और बस उन्हें औसत करता है। मैं इस दृष्टिकोण का उपयोग करते हुए आत्मविश्वास के अंतराल पर कम कर रहा हूं, हालांकि, मानक बूटस्ट्रैप प्रतिशताइल विधि का उपयोग करने के अलावा। n
फ्रैंक हरेल

शानदार प्रतिक्रिया! यहां सुझाए गए दृष्टिकोण होमोसैडैस्टिक मॉडल त्रुटियों को मानते हैं - मैंने उन परियोजनाओं पर काम किया है जहां यह धारणा स्थिर नहीं थी। मैं एक विकल्प के रूप में गामा प्रतिगमन के उपयोग का भी सुझाव दूंगा, जो पूर्वाग्रह सुधार की आवश्यकता को दरकिनार कर देगा।
इसाबेला घीमे

4

आप जेफ्रीज़ के साथ बायेसियन दृष्टिकोण की कोशिश कर सकते हैं। इसे एक सही लगातारवादी-मिलान संपत्ति के साथ विश्वसनीयता अंतराल प्राप्त करना चाहिए: विश्वसनीयता अंतराल का विश्वास स्तर इसकी विश्वसनीयता स्तर के करीब है।

 # required package
 library(bayesm)

 # simulated data
 mu <- 0
 sdv <- 1
 y <- exp(rnorm(1000, mean=mu, sd=sdv))

 # model matrix
 X <- model.matrix(log(y)~1)
 # prior parameters
 Theta0 <- c(0)
 A0 <- 0.0001*diag(1)
 nu0 <- 0 # Jeffreys prior for the normal model; set nu0 to 1 for the lognormal model
 sigam0sq <- 0
 # number of simulations
 n.sims <- 5000

 # run posterior simulations
 Data <- list(y=log(y),X=X)
 Prior <- list(betabar=Theta0, A=A0, nu=nu0, ssq=sigam0sq)
 Mcmc <- list(R=n.sims)
 bayesian.reg <- runireg(Data, Prior, Mcmc)
 mu.sims <- t(bayesian.reg$betadraw) # transpose of bayesian.reg$betadraw
 sigmasq.sims <- bayesian.reg$sigmasqdraw

 # posterior simulations of the mean of y: exp(mu+sigma²/2)
 lmean.sims <- exp(mu.sims+sigmasq.sims/2)

 # credibility interval about lmean:
 quantile(lmean.sims, probs = c(0.025, 0.975))

यह बहुत दिलचस्प लगता है और जब से मैं बायेसियन तरीकों को पसंद करता हूं, मैंने इसे उकेरा। यह अभी भी कुछ संदर्भों को जोड़कर सुधारा जा सकता है या अधिमानतः यह समझने के लिए भी समझा जा सकता है कि यह क्यों काम करता है।
एरिक

यह ज्ञात है कि "इट" (लगातार-मिलान वाली संपत्ति) और लिए काम करती है । के लिए frequentist मिलान संपत्ति एकदम सही है: विश्वसनीयता अंतराल बिल्कुल सामान्य विश्वास अंतराल के समान है। के लिए मैं नहीं जानता कि क्या यह सही है, लेकिन यह क्योंकि पिछला वितरण एक उलटा-गामा है की जाँच करने के लिए आसान है। यह तथ्य कि यह और काम करता है, जरूरी नहीं है कि यह एक फ़ंक्शन of और । मुझे नहीं पता कि कुछ संदर्भ हैं या नहीं, लेकिन आप सिमुलेशन के साथ जांच कर सकते हैं। σ 2 μ σ 2 μ σ 2( μ , σ 2 ) μ σ 2μσ2μσ2μσ2f(μ,σ2)μσ2
स्टीफन लॉरेंट

चर्चा के लिए बहुत धन्यवाद। मैंने अपने सभी टिप्पणियों को स्पष्टता के लिए और किसी भी भ्रम से बचने के लिए हटा दिया। (+1)

1
@Procrastinator धन्यवाद भी। मैंने अपनी टिप्पणियाँ भी हटा दी हैं और अपने कोड में जेफ्रीज़ के बारे में बात जोड़ दी है।
स्टीफन लॉरेंट

क्या कोई मुझे बता सकता है कि बूटसूट = बूट (डेटा = डेटा 0, स्टेटिस्टिक = फ़ंक्शन (डी, इंड) {एमएल (डी [इंड])}, आर = 10000) कैसे काम करता है। मैं देखता हूं कि "इंडस्ट्रीज़" एक इंडेक्स है, लेकिन मुझे समझ नहीं आता कि "इंड" को कैसे खोजा जाए। यह दूसरा तर्क कहां है? मैंने इसे वैकल्पिक कार्यों के साथ आज़माया है और यह काम नहीं किया। वास्तविक फ़ंक्शन बूट को देखते हुए, मैं इंडस्ट्रीज़ के लिए एक संदर्भ नहीं देखता।
andor kesselman

0

हालाँकि, मुझे इस पद्धति पर थोड़ा संदेह है, केवल इसलिए कि यह माध्य के लिए काम नहीं करता है: 10mean (log10 (X))) माध्य (X)

आप सही कह रहे हैं - यह ज्यामितीय माध्य का सूत्र है, न कि अंकगणितीय माध्य। अंकगणित माध्य सामान्य वितरण से एक पैरामीटर है, और अक्सर lognormal डेटा के लिए बहुत सार्थक नहीं है। यदि आप अपने डेटा के लिए केंद्रीय प्रवृत्ति के बारे में अधिक सार्थक बात करना चाहते हैं, तो ज्यामितीय माध्य लॉगानॉर्मल वितरण से संबंधित पैरामीटर है।

और आप वास्तव में डेटा के लघुगणक को ले कर ज्यामितीय माध्य के बारे में CI की गणना करेंगे, हमेशा की तरह मीन और CI की गणना करेंगे और बैक-ट्रांसफ़ॉर्मिंग करेंगे। आप सही कह रहे हैं कि आप वास्तव में अंकगणितीय माध्य के चारों ओर ज्यामितीय माध्य के लिए CI लगाकर अपने वितरण को मिलाना नहीं चाहते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.