Calcola l'intervallo di confidenza per la media di una distribuzione beta


12

Prendi in considerazione una distribuzione beta per una determinata serie di valutazioni in [0,1]. Dopo aver calcolato la media:

μ=αα+β

C'è un modo per fornire un intervallo di confidenza attorno a questa media?


1
Dominic: hai definito la media della popolazione . Un intervallo di confidenza si baserebbe su una stima di tale media. Quale statistica di esempio stai usando?
Glen_b -Restate Monica

Glen_b - Ciao, sto usando un insieme di classificazioni normalizzate (di un prodotto) nell'intervallo [0,1]. Quello che sto cercando è una stima di un intervallo attorno alla media (per un dato livello di confidenza), ad esempio: media + - 0,02
domina

2
Domenico: Fammi provare di nuovo. Non conosci la media della popolazione . Se desideri che una stima si collochi al centro dell'intervallo ( stima metà larghezza , come nel tuo commento), avresti bisogno di uno stimatore per quella quantità nell'ordine intermedio per posizionare un intervallo attorno ad esso. Cosa stai usando per quello? Massima verosimiglianza? Metodo dei momenti? qualcos'altro? ±
Glen_b

Glen_b - grazie per la tua pazienza. Userò MLE
Dominic

2
dominic; in tal caso, per grande si utilizzerebbero le proprietà asintotiche degli stimatori della massima verosimiglianza; la stima ML di sarà distribuita asintoticamente normalmente con medio ed errore standard che può essere calcolato dalle informazioni di Fisher . In piccoli campioni a volte si può calcolare la distribuzione dell'MLE (anche se nel caso della beta mi sembra di ricordare che è difficile); un'alternativa è simulare la distribuzione in base alle dimensioni del campione per comprenderne il comportamento. μ μnμμ
Glen_b

Risposte:


22

Mentre ci sono metodi specifici per calcolare gli intervalli di confidenza per i parametri in una distribuzione beta, descriverò alcuni metodi generali, che possono essere utilizzati per (quasi) tutti i tipi di distribuzioni , compresa la distribuzione beta, e sono facilmente implementabili in R .

Intervalli di confidenza della probabilità del profilo

Cominciamo con la stima della massima verosimiglianza con gli intervalli di confidenza della verosimiglianza del profilo corrispondenti. Per prima cosa abbiamo bisogno di alcuni dati di esempio:

# Sample size
n = 10

# Parameters of the beta distribution
alpha = 10
beta = 1.4

# Simulate some data
set.seed(1)
x = rbeta(n, alpha, beta)

# Note that the distribution is not symmetrical
curve(dbeta(x,alpha,beta))

Funzione di densità di probabilità per la distribuzione beta.

La media reale / teorica è

> alpha/(alpha+beta)
0.877193

Ora dobbiamo creare una funzione per calcolare la funzione di probabilità del log negativo per un campione dalla distribuzione beta, con la media come uno dei parametri. Possiamo usare la dbeta()funzione, ma poiché questo non usa una parametrizzazione che coinvolge la media, dobbiamo esprimere i suoi parametri ( α e β ) in funzione della media e di qualche altro parametro (come la deviazione standard):

# Negative log likelihood for the beta distribution
nloglikbeta = function(mu, sig) {
  alpha = mu^2*(1-mu)/sig^2-mu
  beta = alpha*(1/mu-1)
  -sum(dbeta(x, alpha, beta, log=TRUE))
}

Per trovare la stima della massima verosimiglianza, possiamo usare la mle()funzione nella stats4libreria:

library(stats4)
est = mle(nloglikbeta, start=list(mu=mean(x), sig=sd(x)))

Ignora gli avvertimenti per ora. Sono causati dagli algoritmi di ottimizzazione che provano valori non validi per i parametri, fornendo valori negativi per α e / o β . (Per evitare l'avviso, è possibile aggiungere un lowerargomento e modificare l'ottimizzazione methodutilizzata.)

Ora abbiamo sia stime che intervalli di confidenza per i nostri due parametri:

> est
Call:
mle(minuslogl = nloglikbeta, start = list(mu = mean(x), sig = sd(x)))

Coefficients:
        mu        sig 
0.87304148 0.07129112

> confint(est)
Profiling...
         2.5 %    97.5 %
mu  0.81336555 0.9120350
sig 0.04679421 0.1276783

Si noti che, come previsto, gli intervalli di confidenza non sono simmetrici:

par(mfrow=c(1,2))
plot(profile(est)) # Profile likelihood plot

Grafico della probabilità del profilo per la distribuzione beta.

(Le righe magenta del secondo esterno mostrano l'intervallo di confidenza del 95%.)

Si noti inoltre che anche con solo 10 osservazioni, otteniamo stime molto buone (un intervallo di confidenza ristretto).

In alternativa a mle(), è possibile utilizzare la fitdistr()funzione dal MASSpacchetto. Anche questo calcola lo stimatore della massima verosimiglianza e ha il vantaggio che devi solo fornire la densità, non la verosimiglianza negativa del log, ma non ti dà intervalli di confidenza della verosimiglianza del profilo, solo intervalli di confidenza asintotici (simmetrici).

Un'opzione migliore è mle2()(e funzioni correlate) dal bbmlepacchetto, che è un po 'più flessibile e potente di mle(), e offre trame leggermente più belle.

Intervalli di confidenza Bootstrap

Un'altra opzione è quella di utilizzare il bootstrap. È estremamente facile da usare in R e non è nemmeno necessario fornire una funzione di densità:

> library(simpleboot)
> x.boot = one.boot(x, mean, R=10^4)
> hist(x.boot)                # Looks good
> boot.ci(x.boot, type="bca") # Confidence interval
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 10000 bootstrap replicates

CALL : 
boot.ci(boot.out = x.boot, type = "bca")

Intervals : 
Level       BCa          
95%   ( 0.8246,  0.9132 )  
Calculations and Intervals on Original Scale

Il bootstrap ha l'ulteriore vantaggio di funzionare anche se i tuoi dati non provengono da una distribuzione beta.

Intervalli di confidenza asintotici

Per gli intervalli di confidenza sulla media, non dimentichiamo i buoni vecchi intervalli di confidenza asintotici basati sul teorema del limite centrale (e la distribuzione t ). Finché abbiamo una grande dimensione del campione (quindi si applica il CLT e la distribuzione della media del campione è approssimativamente normale) o valori elevati sia di α che β (in modo che la distribuzione beta stessa sia approssimativamente normale), funziona bene. Qui non abbiamo nessuno dei due, ma l'intervallo di confidenza non è ancora così male:

> t.test(x)$conf.int
[1] 0.8190565 0.9268349

Per valori leggermente maggiori di n (e valori non troppo estremi dei due parametri), l'intervallo di confidenza asintotica funziona molto bene.


Grazie Karl. Domanda veloce: come hai determinato i tuoi alpha e beta? Ho usato la varianza e la media del campione per ottenere alfa e beta, ma penso di aver confuso la media del campione con la media della popolazione, quindi non sono sicuro di averlo fatto nel modo giusto ... vedi il commento di Glen_b sopra .
Dominic

Per determinare α e β come funzioni della media e della deviazione standard, ho appena invertito le funzioni per la media e le deviazioni standard come funzioni di α e β (ma sono sicuro che puoi anche cercarlo in rete).
Karl Ove Hufthammer,

+1 Karl. Ho una domanda simile, data , media e varianza della distribuzione beta, esiste un modo per stimare l'intervallo di confidenza della media. Ad esempio, nella distribuzione normale potremmo facilmente farlo, ma non so come si possa fare questa distribuzione beta. Ho sollevato una domanda , ma è stata contrassegnata come duplicata. α,β
previsioni del

0

Dai un'occhiata alla regressione beta. Una buona introduzione a come farlo usando R può essere trovata qui:

http://cran.r-project.org/web/packages/betareg/vignettes/betareg.pdf

Un altro modo (molto semplice) per costruire un intervallo di confidenza sarebbe quello di utilizzare un approccio boostrap non parametrico. Wikipedia ha buone informazioni:

http://en.wikipedia.org/wiki/Bootstrapping_%28statistics%29

Anche un bel video qui:

http://www.youtube.com/watch?v=ZCXg64l9R_4

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.