Calcul de l'erreur standard après une transformation logarithmique


19

Considérez un ensemble aléatoire de nombres qui sont normalement distribués:

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

Nous aimerions connaître la moyenne et l'erreur standard sur la moyenne, nous procédons donc comme suit:

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

Génial!

Cependant, supposons que nous ne savons pas nécessairement que notre distribution d'origine suit une distribution normale. Nous transformons les données en journal et effectuons le même calcul d'erreur standard.

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

Cool, mais maintenant nous devons effectuer une rétrotransformation pour obtenir notre réponse en unités et non en unités log.

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

Ma question: pourquoi, pour une distribution normale, l'erreur-type diffère-t-elle selon qu'elle a été calculée à partir de la distribution elle-même ou si elle a été transformée, calculée et rétrotransformée? Remarque: les moyennes sont restées les mêmes quelle que soit la transformation.

EDIT # 1: En fin de compte, je suis intéressé par le calcul d'une moyenne et des intervalles de confiance pour les données non distribuées normalement, donc si vous pouvez donner des conseils sur la façon de calculer des IC à 95% sur les données transformées, y compris la rétrotransformation vers leurs unités natives , Je l'apprécierais!
FIN DE LA MODIFICATION # 1

EDIT # 2: J'ai essayé d'utiliser la fonction quantile pour obtenir les intervalles de confiance à 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]

Donc, cela a convergé sur la même réponse, ce qui est bien. Cependant, l'utilisation de cette méthode ne fournit pas exactement le même intervalle en utilisant des données non normales avec des «petits» échantillons:

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]

Quelle méthode serait considérée comme "plus correcte". Je suppose que l'on choisirait l'estimation la plus prudente?

À titre d'exemple, déclareriez-vous ce résultat pour les données non normales (t) comme ayant une moyenne de 0,92 unité avec un intervalle de confiance à 95% de [0,211, 4,79]?
FIN DE LA MODIFICATION # 2

Merci pour votre temps!


1
SE est SD divisé par la racine carrée de N. Pas seulement N.
Penguin_Knight

3
Merci! J'ai résolu ce problème. Le problème que je rencontre reste cependant.
dérouté

Réponses:


12

Votre principal problème avec le calcul initial est qu'il n'y a aucune bonne raison pour que soit comme sd ( Y ) . C'est généralement assez différent.eDakota du Sud(Journal(Oui))Dakota du Sud(Oui)

Dans certaines situations, vous pouvez calculer une approximation approximative de partir de sd ( log ( Y ) ) via l' expansion de Taylor .Dakota du Sud(Oui)Dakota du Sud(Journal(Oui))

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

Si nous considérons comme la variable aléatoire sur l'échelle logarithmique, ici, g ( X ) = exp ( X )Xg(X)=exp(X)

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

Dakota du Sud(exp(X))exp(μX)σX

Ces notions se répercutent sur les distributions d'échantillonnage.

Cela a tendance à fonctionner assez bien si l'écart-type est vraiment faible par rapport à la moyenne, comme dans votre exemple.

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

Si vous souhaitez transformer un CI pour un paramètre , cela fonctionne en transformant les points de terminaison.

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

Si vos données sont approximativement normales sur l'échelle logarithmique, vous souhaiterez peut-être les traiter comme un problème de production d'un intervalle pour une moyenne lognormale.


1
Merci Glen_b. Je n'ai jamais appris ça en cours de statistique.
dérouté

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

Merci @Dezmond. Oui c'est correct. J'ajouterai une correction à ma réponse, cette partie près de la fin est assez mutilée.
Glen_b -Reinstate Monica

0

Il semble que vous vouliez effectivement l'erreur standard géométrique, semblable à la moyenne géométrique exp(mean(log(x))).

Bien qu'il puisse sembler raisonnable de calculer cela comme:

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

Vous et d'autres avez déjà souligné que ce n'est pas correct pour plusieurs raisons. Utilisez plutôt:

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

Quelle est la moyenne géométrique multipliée par l'erreur log-standard. Cela devrait se rapprocher assez bien de l'erreur standard "naturelle".

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.