Calcolo dell'errore standard dopo una trasformazione del log


19

Considera un insieme casuale di numeri che sono normalmente distribuiti:

x <- rnorm(n=1000, mean=10)

Vorremmo conoscere la media e l'errore standard sulla media, quindi facciamo quanto segue:

se <- function(x) { sd(x)/sqrt(length(x)) }
mean(x) # something near 10.0 units
se(x)   # something near 0.03 units

Grande!

Tuttavia, supponiamo che non sappiamo necessariamente che la nostra distribuzione originale segue una distribuzione normale. Trasformiamo i dati in trasformazioni ed eseguiamo lo stesso calcolo degli errori standard.

z <- log(x, base=10)
mean(z) # something near 1 log units
se(z)   # something near 0.001 log units

Bene, ma ora abbiamo bisogno di tornare indietro per ottenere la nostra risposta in unità NON unità di registro.

10^mean(z) # something near 10.0 units
10^se(z)   # something near 1.00 units

La mia domanda: Perché, per una distribuzione normale, l'errore standard differisce a seconda che sia stato calcolato dalla distribuzione stessa o se sia stato trasformato, calcolato e trasformato indietro? Nota: i mezzi sono usciti allo stesso modo indipendentemente dalla trasformazione.

EDIT # 1: In definitiva, sono interessato a calcolare una media e intervalli di confidenza per i dati non normalmente distribuiti, quindi se puoi dare una guida su come calcolare gli IC del 95% sui dati trasformati, incluso il modo di tornare indietro alle loro unità native , Lo apprezzerei!
FINE EDIT # 1

EDIT # 2: ho provato a usare la funzione quantile per ottenere gli intervalli di confidenza al 95%:

quantile(x, probs = c(0.05, 0.95))     # around [8.3, 11.6]
10^quantile(z, probs = c(0.05, 0.95))  # around [8.3, 11.6]

Quindi, quello convergeva sulla stessa risposta, il che è positivo. Tuttavia, l'utilizzo di questo metodo non fornisce lo stesso intervallo esatto utilizzando dati non normali con campioni "piccoli":

t <- rlnorm(10)
mean(t)                            # around 1.46 units
10^mean(log(t, base=10))           # around 0.92 units
quantile(t, probs = c(0.05, 0.95))                     # around [0.211, 4.79]
10^(quantile(log(t, base=10), probs = c(0.05, 0.95)))  # around [0.209, 4.28]

Quale metodo sarebbe considerato "più corretto". Presumo che uno sceglierebbe la stima più prudente?

Ad esempio, riferiresti questo risultato per i dati non normali (t) come aventi una media di 0,92 unità con un intervallo di confidenza del 95% di [0,211, 4,79]?
FINE EDIT # 2

Grazie per il tuo tempo!


1
SE è SD divisa per radice quadrata di N. Non solo N.
Penguin_Knight

3
Grazie! Ho risolto quel problema. Il problema che sto riscontrando rimane però.
sconcertato il

Risposte:


12

Il tuo problema principale con il calcolo iniziale è che non c'è una buona ragione per cui dovrebbe essere come sd ( Y ) . In genere è abbastanza diverso.esd(log(Y))sd(Y)

In alcune situazioni, è possibile calcolare un'approssimazione approssimativa di da sd ( log ( Y ) ) tramite l' espansione di Taylor .sd(Y)sd(log(Y))

Var(g(X))(g'(μX))2σX2.

Se consideriamo come la variabile casuale sulla scala del log, qui g ( X ) = exp ( X )Xg(X)=exp(X)

Se Var(exp(X))exp(μX)2σX2

quindi sd(exp(X))exp(μX)σX

Queste nozioni si traducono in distribuzioni campionarie.

Questo tende a funzionare ragionevolmente bene se la deviazione standard è davvero piccola rispetto alla media, come nel tuo esempio.

> mean(y)
[1] 10
> sd(y)
[1] 0.03
> lm=mean(log(y))
> ls=sd(log(y))
> exp(lm)*ls
[1] 0.0300104 

Se si desidera trasformare un elemento della configurazione per un parametro , funziona trasformando gli endpoint.

E(exp(X))exp(μX)(1+σX2/2)(c.exp(L),c.exp(U))L,Uc1+σX2/2

Se i tuoi dati sono approssimativamente normali sulla scala del log, potresti volerli considerare come un problema di produzione di un intervallo per una media lognormale.


1
Grazie Glen_b. Non l'ho mai imparato in classe di statistica.
sconcertato il

2
E[f(X)]f(μX)+f''(μX)2σX2=exp(μX)(1+σX22)
exp(μX)»σX2E[exp(X)]

Grazie @Dezmond. Sì, è corretto. Aggiungerò una correzione alla mia risposta, che una parte di esso verso la fine è piuttosto distorta.
Glen_b -Restate Monica

0

Sembra che tu voglia effettivamente l'errore standard geometrico, simile alla media geometrica exp(mean(log(x))).

Mentre potrebbe sembrare ragionevole calcolarlo come:

exp(sd(log(x)/sqrt(n-1)))

Tu e altri avete già sottolineato che ciò non è corretto per alcuni motivi. Invece, usa:

exp(mean(log(x))) * (sd(log(x))/sqrt(n-1))

Qual è la media geometrica moltiplicata per l'errore log-standard. Questo dovrebbe approssimare abbastanza bene l'errore standard "naturale".

Fonte: https://www.jstor.org/stable/pdf/2235723.pdf

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.