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!
Réponses:
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.esd ( log( O) ) sd ( Y)
Dans certaines situations, vous pouvez calculer une approximation approximative de partir de sd ( log ( Y ) ) via l' expansion de Taylor .sd ( Y) sd ( log( O) )
Si nous considérons comme la variable aléatoire sur l'échelle logarithmique, ici, g ( X ) = exp ( X )X g( X) = exp( 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.
Si vous souhaitez transformer un CI pour un paramètre , cela fonctionne en transformant les points de terminaison.
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.
la source
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:
Vous et d'autres avez déjà souligné que ce n'est pas correct pour plusieurs raisons. Utilisez plutôt:
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
la source