Qual è la relazione tra la probabilità del profilo e gli intervalli di confidenza?


18

Per creare questo grafico ho generato campioni casuali di dimensioni diverse da una distribuzione normale con media = 0 e sd = 1. Gli intervalli di confidenza sono stati quindi calcolati utilizzando valori di cut-off alfa compresi tra 0,001 e 0,999 (linea rossa) con la funzione t.test (), la probabilità del profilo è stata calcolata utilizzando il codice riportato di seguito che ho trovato nelle note della lezione messe in linea (posso t trova il link al momento Modifica: Trovato ), questo è mostrato dalle linee blu. Le linee verdi mostrano la densità normalizzata usando la funzione D densità () ei dati sono mostrati dai grafici a scatole nella parte inferiore di ogni grafico. Sulla destra c'è un diagramma bruco degli intervalli di confidenza al 95% (rosso) e 1/20 degli intervalli di verosimiglianza massima (blu).

Codice R utilizzato per la probabilità del profilo:

  #mn=mean(dat)
  muVals <- seq(low,high, length = 1000)
  likVals <- sapply(muVals,
                    function(mu){
                      (sum((dat - mu)^2) /
                         sum((dat - mn)^2)) ^ (-n/2)
                    }
  )

inserisci qui la descrizione dell'immagine

La mia domanda specifica è se esiste una relazione nota tra questi due tipi di intervalli e perché l'intervallo di confidenza sembra essere più conservativo per tutti i casi tranne quando n = 3. Sono anche desiderati commenti / risposte sulla validità dei miei calcoli (e un modo migliore per farlo) e la relazione generale tra questi due tipi di intervalli.

Codice R:

samp.size=c(3,4,5,10,20,1000)
cnt2<-1
ints=matrix(nrow=length(samp.size),ncol=4)
layout(matrix(c(1,2,7,3,4,7,5,6,7),nrow=3,ncol=3, byrow=T))
par(mar=c(5.1,4.1,4.1,4.1))
for(j in samp.size){


  #set.seed(200)
  dat<-rnorm(j,0,1)
  vals<-seq(.001,.999, by=.001)
  cis<-matrix(nrow=length(vals),ncol=3)
  cnt<-1
  for(ci in vals){
    x<-t.test(dat,conf.level=ci)$conf.int[1:2]
    cis[cnt,]<-cbind(ci,x[1],x[2])
    cnt<-cnt+1
  }


  mn=mean(dat)
  n=length(dat)
  high<-max(c(dat,cis[970,3]), na.rm=T)
  low<-min(c(dat,cis[970,2]), na.rm=T)
  #high<-max(abs(c(dat,cis[970,2],cis[970,3])), na.rm=T)
  #low<--high


  muVals <- seq(low,high, length = 1000)
  likVals <- sapply(muVals,
                    function(mu){
                      (sum((dat - mu)^2) /
                         sum((dat - mn)^2)) ^ (-n/2)
                    }
  )


  plot(muVals, likVals, type = "l", lwd=3, col="Blue", xlim=c(low,high),
       ylim=c(-.1,1), ylab="Likelihood/Alpha", xlab="Values",
       main=c(paste("n=",n), 
              "True Mean=0 True sd=1", 
              paste("Sample Mean=", round(mn,2), "Sample sd=", round(sd(dat),2)))
  )
  axis(side=4,at=seq(0,1,length=6),
       labels=round(seq(0,max(density(dat)$y),length=6),2))
  mtext(4, text="Density", line=2.2,cex=.8)

  lines(density(dat)$x,density(dat)$y/max(density(dat)$y), lwd=2, col="Green")
  lines(range(muVals[likVals>1/20]), c(1/20,1/20), col="Blue", lwd=4)
  lines(cis[,2],1-cis[,1], lwd=3, col="Red")
  lines(cis[,3],1-cis[,1], lwd=3, col="Red")
  lines(cis[which(round(cis[,1],3)==.95),2:3],rep(.05,2), 
        lty=3, lwd=4, col="Red")
  abline(v=mn, lty=2, lwd=2)
  #abline(h=.05, lty=3, lwd=4, col="Red")
  abline(h=0, lty=1, lwd=3)
  abline(v=0, lty=3, lwd=1)

  boxplot(dat,at=-.1,add=T, horizontal=T, boxwex=.1, col="Green")
  stripchart(dat,at=-.1,add=T, pch=16, cex=1.1)

  legend("topleft", legend=c("Likelihood"," Confidence Interval", "Sample Density"),
         col=c("Blue","Red", "Green"), lwd=3,bty="n")

  ints[cnt2,]<-cbind(range(muVals[likVals>1/20])[1],range(muVals[likVals>1/20])[2],
                     cis[which(round(cis[,1],3)==.95),2],cis[which(round(cis[,1],3)==.95),3])
  cnt2<-cnt2+1
}
par(mar=c(5.1,4.1,4.1,2.1))


plot(0,0, type="n", ylim=c(1,nrow(ints)+.5), xlim=c(min(ints),max(ints)), 
     yaxt="n", ylab="Sample Size", xlab="Values")
for(i in 1:nrow(ints)){
  segments(ints[i,1],i+.2,ints[i,2],i+.2, lwd=3, col="Blue")
  segments(ints[i,3],i+.3,ints[i,4],i+.3, lwd=3, col="Red")
}
axis(side=2, at=seq(1.25,nrow(ints)+.25,by=1), samp.size)

In te appunti di lezione, mnè un refuso per mue non mean(dat). Come ti ho detto nei commenti alla tua altra domanda , questo dovrebbe essere chiaro dalla pagina delle definizioni 23.
Elvis,

@Elvis Non la penso così. mn è definito a pagina 18 delle note.
Pallone

Ho cercato di chiarire il concetto di probabilità del profilo. Puoi commentare un po 'più di quello che stai facendo nel codice sopra?
Elvis,

3
@Elvis Neanche io capisco. Un intervallo di confidenza basato sulla probabilità del profilo dovrebbe essere costruito con l'aiuto dei percentili, che non appaiono da nessuna parte. χ2
Stéphane Laurent,

1
@ StéphaneLaurent Non sono sicuro che il codice originale è fornisco intervalli di confidenza. Piuttosto 1/20 intervalli di verosimiglianza massima. Credo che il nome degli intervalli di confidenza nella mia trama siano intervalli di confidenza di tipo "wald" e le linee rosse sui grafici siano "curve di confidenza" descritte in questa pagina di Wikipedia
Flask

Risposte:


10

Non darò una risposta completa (faccio fatica a cercare di capire esattamente cosa stai facendo), ma cercherò di chiarire come viene costruita la probabilità del profilo. Potrei completare la mia risposta in seguito.

La probabilità completa per un normale campione di dimensione è L ( μ , σ 2 ) = ( σ 2 ) - n / 2 exp ( - Σ i ( x i - μ ) 2 / 2 σ 2 ) .n

L(μ,σ2)=(σ2)-n/2exp(-Σio(Xio-μ)2/2σ2).

Se è il tuo parametro di interesse e σ 2 è un parametro di disturbo, una soluzione per fare inferenza solo su μ è definire la probabilità del profilo L P ( μ ) = L ( μ , ^ σ 2 ( μ ) ) dove ^ σ 2 ( μ ) è il MLE per μ fisso: ^ σ 2 ( μ ) = argmax σ 2 L ( μ ,μσ2μ

LP(μ)=L(μ,σ2^(μ))
σ2^(μ)μ
σ2^(μ)=argmaxσ2L(μ,σ2).

σ2^(μ)=1nΣK(XK-μ)2.

LP(μ)=(1nΣK(XK-μ)2)-n/2exp(-n/2).

exp(-n/2)

> data(sleep)
> difference <- sleep$extra[11:20]-sleep$extra[1:10]
> Lp <- function(mu, x) {n <- length(x); mean( (x-mu)**2 )**(-n/2) }
> mu <- seq(0,3, length=501)
> plot(mu, sapply(mu, Lp, x = difference), type="l")

probabilità del profilo

Collegamento con la probabilità Cercherò di evidenziare il collegamento con la probabilità con il seguente grafico.

Per prima cosa definire la probabilità:

L <- function(mu,s2,x) {n <- length(x); s2**(-n/2)*exp( -sum((x-mu)**2)/2/s2 )}

Quindi fai un diagramma di contorno:

sigma <- seq(0.5,4, length=501)
mu <- seq(0,3, length=501)

z <- matrix( nrow=length(mu), ncol=length(sigma))
for(i in 1:length(mu))
  for(j in 1:length(sigma))
    z[i,j] <- L(mu[i], sigma[j], difference)

# shorter version
# z <- outer(mu, sigma, Vectorize(function(a,b) L(a,b,difference)))

contour(mu, sigma, z, levels=c(1e-10,1e-6,2e-5,1e-4,2e-4,4e-4,6e-4,8e-4,1e-3,1.2e-3,1.4e-3))

σ2^(μ)

hats2mu <- sapply(mu, function(mu0) mean( (difference-mu0)**2 ))
lines(mu, hats2mu, col="red", lwd=2)

trama di contorno di L

I valori della probabilità del profilo sono i valori presi dalla probabilità lungo la parabola rossa.

μ^

σ2^(μ)

Ad esempio, puoi anche utilizzare la probabilità del profilo per creare test di punteggio.


mu nel codice è una sequenza di valori dal più basso al più alto, la probabilità per ciascuno di questi valori viene divisa per la probabilità nella media del campione (mn). Quindi è una probabilità normalizzata.
Pallone

Penso che sia la stessa cosa ma non normalizzata. Puoi metterlo nel codice R o tracciare la funzione per alcuni dati in modo che possiamo confrontare?
Pallone

Ecco qui. All'inizio ho pensato che mnfosse un refuso, ora penso che il codice R sia tutto sbagliato. Lo ricontrollerò domani - è tardi se vivo.
Elvis,

Potresti avere ragione. Non capisco come il codice riesca a normalizzarlo. Oh, ho capito, la "normalizzazione" si sta semplicemente dividendo per il massimo?
Elvis,

1
Penso che sia facile vedere quando il rapporto di verosimiglianza è inferiore a qualche soglia (ad es. 1/20 massimo) con ipotesi nulla (ad es. Zero).
Pallone

7

χK2

0.14795%

Questi sono risultati classici e quindi fornirò semplicemente alcuni riferimenti su questo:

http://www.jstor.org/stable/2347496

http://www.stata-journal.com/sjpdf.html?articlenum=st0132

http://www.unc.edu/courses/2010fall/ecol/563/001/docs/lectures/lecture11.htm

http://en.wikipedia.org/wiki/Likelihood-ratio_test

http://en.wikipedia.org/wiki/Likelihood_function#Profile_likelihood

Il seguente codice R mostra che, anche per piccoli campioni, gli intervalli ottenuti con entrambi gli approcci sono simili (sto riutilizzando l'esempio di Elvis):

Si noti che è necessario utilizzare la probabilità di profilo normalizzata.

data(sleep)
x <- sleep$extra[11:20]-sleep$extra[1:10]
n <- length(x)
Rp <- function(mu) {mean( (x-mean(x))^2 )^(n/2)/mean( (x-mu)^2 )^(n/2) }
Rp(mean(x))

mu <- seq(0,3, length=501)
plot(mu, sapply(mu, Rp), type="l")


Rpt<- function(mu) Rp(mu)-0.147 # Just an instrumental function

# Likelihood-confidence interval of 95% level

c(uniroot(Rpt,c(0.5,1.5))$root,uniroot(Rpt,c(1.51,3))$root)

# t confidence interval

t.test(x,conf.level=0.95)$conf.int

Se utilizziamo un campione di dimensioni maggiori, gli intervalli di confidenza sono ancora più vicini:

set.seed(123)
x <- rnorm(100)
n <- length(x)
Rp <- function(mu) {mean( (x-mean(x))^2 )^(n/2)/mean( (x-mu)^2 )^(n/2) }
Rp(mean(x))

mu <- seq(-0.5,0.5, length=501)
plot(mu, sapply(mu, Rp), type="l")


Rpt<- function(mu) Rp(mu)-0.147 # Just an instrumental function

# Likelihood-confidence interval of 95% level

c(uniroot(Rpt,c(-0.4,0))$root,uniroot(Rpt,c(0,0.4))$root)

# t confidence interval

t.test(x,conf.level=0.95)$conf.int

UN PUNTO IMPORTANTE:

Si noti che per campioni specifici diversi tipi di intervalli di confidenza possono differire in termini di lunghezza o posizione, ciò che conta davvero è la loro copertura. A lungo termine, tutti dovrebbero fornire la stessa copertura, indipendentemente da quanto differiscono per campioni specifici.


@Prokoflev se esiste una semplice relazione tra gli intervalli di confidenza calcolati con la funzione R t.test () e quelli calcolati dal codice della funzione di verosimiglianza sopra riportato, puoi pubblicarlo. Sono particolarmente interessato al caso n = 3. Sfortunatamente ho poca conoscenza della matematica, così tanti documenti mi conducono nella tana del coniglio cercando i nomi dei simboli e cosa rappresentano ecc. Quando alcune righe di codice (la più semplice è la R) potrebbero spiegarmelo.
Pallone

@Flask Sei interessato ad ottenere intervalli di confidenza per i parametri di una distribuzione normale o di un quadro più generale?
Prokofiev,

@Prokoflev appositamente per la media di una distribuzione normale, come mostrato nel mio esempio nella domanda. Mi chiedo in particolare perché gli intervalli di confidenza sono più conservativi, tranne nel caso n = 3.
Pallone

95%

1
Sto cominciando a credere che dovrei moltiplicare gli intervalli di probabilità per alcuni quantili della distribuzione normale o chisquare per ottenere l'intervallo di confidenza corrispondente.
Flask

1

χ2normun'liozed

  1. La probabilità logaritmica del profilo è approssimativamente quadratica
  2. Esiste una trasformazione dei parametri che rende la probabilità di log del profilo approssimativamente quadratica.

Il quadratico è importante perché definisce una distribuzione normale in scala logaritmica. Più è quadratico, migliore è l'approssimazione e i CI risultanti. La scelta del cutoff di 1/20 per gli intervalli di probabilità equivale a un IC superiore al 95% nel limite asintotico, motivo per cui gli intervalli blu sono generalmente più lunghi di quelli rossi.

Ora, c'è un altro problema con la probabilità del profilo che richiede attenzione. Se hai molte variabili su cui stai profilando, quindi se il numero di punti dati per dimensione è basso, la probabilità del profilo può essere molto distorta e ottimista. Le probabilità di profilo marginale, condizionale e modificato vengono quindi utilizzate per ridurre questo pregiudizio.

Quindi, la risposta alla tua domanda è SÌ ... la connessione è la normalità asintotica della maggior parte degli stimatori della massima verosimiglianza, come si manifesta nella distribuzione chi-quadro del rapporto di verosimiglianza.


" Se hai molte variabili su cui stai profilando, quindi se il numero di punti dati per dimensione è basso, la probabilità del profilo può essere molto distorta e ottimista " Ottimista rispetto a cosa?
Pallone

@Flask Per ottimismo intendo che sarà troppo stretto per fornire la probabilità di copertura nominale quando la trattiamo come un intervallo di confidenza.

Vedo, grazie, ma nel mio caso specifico è in realtà pessimista? Sono confuso su questo punto se stiamo parlando degli intervalli di verosimiglianza o degli intervalli di confidenza derivati ​​dalle verosimiglianze.
Pallone

@Flask Penso che gli intervalli appaiano pessimistici perché stai confrontando 1/20 dell'intervallo di probabilità (5% di probabilità relativa) con un IC al 95%. Come affermato da altri qui, vorresti davvero confrontarlo con un intervallo di probabilità relativa del 15% per avere mele e mele ... almeno asintoticamente. Il tuo intervallo di probabilità così com'è sta considerando più opzioni come plausbile.

Ho dettagliato il problema reale desidero applicare quello che sto imparando a qui . Temo che nel caso in cui la distribuzione del campionamento sia sconosciuta (ma probabilmente non è normale) e complessa che i tuoi due requisiti potrebbero non essere validi. Tuttavia, le probabilità del profilo che ho calcolato sembrano essere normali e ragionevoli. La distribuzione campionaria della media dovrebbe essere normalmente distribuita?
Pallone
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.