Calcul de l'erreur standard dans l'estimation moyenne pondérée

16

Supposons que w1,w2,,wn et x1,x2,...,xn sont chacun tirés iid de certaines distributions, avec wi indépendant de xi . Les sont strictement positifs. Vous observez tous les , mais pas les ; vous observez plutôt . Je souhaite estimerwiwixiixiwiE[x]à partir de ces informations. Il est clair que l'estimateur est sans biais et peut être calculé en fonction des informations disponibles.

x¯=iwixiiwi

Comment puis-je calculer l'erreur-type de cet estimateur? Pour le sous-cas où ne prend que les valeurs 0 et 1, j'ai naïvement essayé ignorant fondamentalement la variabilité du , mais a constaté que cela fonctionnait mal pour des tailles d'échantillon inférieures à environ 250. (Et cela dépend probablement de la variance du .) Il semble que je n'ai peut-être pas assez d'informations pour calculer une erreur standard «meilleure».xi

sex¯(1x¯)iwi2iwi,
wiwi
shabbychef
la source

Réponses:

17

J'ai rencontré le même problème récemment. Voici ce que j'ai trouvé:

Contrairement à un échantillon aléatoire simple avec des poids égaux, il n'y a pas de définition largement acceptée de l'erreur-type de la moyenne pondérée . De nos jours, il serait simple de faire un bootstrap et d'obtenir la distribution empirique de la moyenne, et sur la base de cette estimation, l'erreur standard.

Et si on voulait utiliser une formule pour faire cette estimation?

La référence principale est cet article de Donald F. Gatz et Luther Smith, où 3 estimateurs basés sur une formule sont comparés aux résultats du bootstrap. La meilleure approximation du résultat du bootstrap provient de Cochran (1977):

(SEMw)2=n(n1)(Pi)2[(PiXiP¯X¯w)22X¯w(PiP¯)(PiXiP¯X¯w)+X¯w2(PiP¯)2]

Ce qui suit est le code R correspondant qui venait de ce fil R listserve .

weighted.var.se <- function(x, w, na.rm=FALSE)
#  Computes the variance of a weighted mean following Cochran 1977 definition
{
  if (na.rm) { w <- w[i <- !is.na(x)]; x <- x[i] }
  n = length(w)
  xWbar = weighted.mean(x,w,na.rm=na.rm)
  wbar = mean(w)
  out = n/((n-1)*sum(w)^2)*(sum((w*x-wbar*xWbar)^2)-2*xWbar*sum((w-wbar)*(w*x-wbar*xWbar))+xWbar^2*sum((w-wbar)^2))
  return(out)
}

J'espère que cela t'aides!

Ming K
la source
C'est assez cool, mais pour mon problème je n'observe même pas le , j'observe plutôt la somme i P i X i . Ma question est très bizarre car elle implique une certaine asymétrie d'information (un tiers rapporte la somme et essaie peut-être de cacher certaines informations). PiXiiPiXi
shabbychef
Mon Dieu, vous avez raison, désolé, je n'ai pas bien compris la question que vous avez posée. Supposons que nous résumions votre problème dans le cas le plus simple où tous les sont Bernoulli RV. Ensuite, vous observez essentiellement la somme d'un sous-ensemble aléatoire de n RV. Je suppose qu'il n'y a pas beaucoup d'informations ici pour estimer. Alors, qu'avez-vous fini par faire pour votre problème d'origine? win
Ming K
@ Ming-ChihKao, cette formule de Cochran est intéressante mais si vous construisez un intervalle de confiance à partir de cela lorsque les données ne sont pas normales, il n'y a pas d'interprétation cohérente correcte? Comment géreriez-vous les intervalles de confiance moyens moyens pondérés non normaux? Quantiles pondérés?
user3022875
Je pense qu'il y a une erreur avec la fonction. Si vous remplacez w=rep(1, length(x)), alors weighted.var.se(rnorm(50), rep(1, 50))c'est à peu près 0.014. Je pense que la formule manque un sum(w^2)dans le numérateur, depuis quand P=1, la variance est 1/(n*(n-1)) * sum((x-xbar)^2). Je ne peux pas vérifier l'article cité car il est derrière un mur payant, mais je pense que cette correction. Curieusement, la solution (différente) de Wikipédia devient dégénérée lorsque tous les poids sont égaux: en.wikipedia.org/wiki/… .
Max Candocia
Ceux-ci peuvent mieux fonctionner en général: analytiquegroup.com/download/WEIGHTED_MEAN.pdf
Max Candocia
5

wi

wi2Var(X)(wi)2=Var(X)wi2(wi)2.
wi
Var(X)E(wi2(wi)2)
XiVar(X)
client
la source
xixx¯(1x¯)