Coefficient de Gini et limites d'erreur


11

J'ai une série chronologique de données avec N = 14 comptes à chaque point dans le temps, et je veux calculer le coefficient de Gini et une erreur standard pour cette estimation à chaque point dans le temps.

Comme je n'ai que N = 14 comptes à chaque instant, j'ai procédé au calcul de la variance jackknife, c'est-à-dire de l'équation 7 de Tomson Ogwang«Une méthode pratique pour calculer l'indice de Gini et son« erreur standard ». OùG(n,k)est le coefficient de Gini des valeurs N sans élémentket ˉ G (x)est la moyenne deG(n,k).var(g)=n-1n×k=1n(g(n,k)-g¯(n))2g(n,k)kg¯(X)g(n,k)

Mise en œuvre naïve directe de la formule ci-dessus pour la variance.

calc.Gini.variance <- function(x) {
  N <- length(x)
  # using jacknifing as suggested by Tomson Ogwang - equation 7
  # in the Oxford Bulletin of Economics and Statistics, 62, 1 (2000)
  # ((n-1)/n) \times \sum_{k=1}^n (G(n,k)-\bar{G}(n))^2
  gini.bar <- Gini(x)

  gini.tmp <- vector(mode='numeric', length=N)
  for (k in 1:N) {
    gini.tmp[k] <- Gini(x[-k])
  }
  gini.bar <- mean(gini.tmp)
  sum((gini.tmp-gini.bar)^2)*(N-1)/N
 }
 calc.Gini.variance(c(1,2,2,3,4,99)) 
 # [1] 0.1696173
 Gini(c(1,2,2,3,4,99))
 # [1] 0.7462462

Est-ce une approche raisonnable pour un petit N? D'autres suggestions?


Vous pouvez peut-être ajouter les calculs réels que vous utilisez pour l'estimation de l'échantillon et l'erreur standard, car de nombreuses personnes peuvent ne pas avoir accès au document via le lien fourni.
cardinal

Réponses:


5

Un problème sera qu'avec cette petite taille d'échantillon et une statistique complexe (coefficient de Gini) la distribution de probabilité de votre statistique ne sera certainement pas approximativement normale, donc "l'erreur standard" peut être trompeuse si vous avez l'intention de l'utiliser pour créer des intervalles de confiance ou tests d'hypothèses reposant sur la normalité.

J'aurais pensé qu'un bootstrap centile serait une meilleure méthode et plus simple à mettre en œuvre. Par exemple:

> library(reldist) # just for the gini() function
> library(boot) # for the boot() function
> x <- c(1,2,2,3,4,99)
> gini(x)
[1] 0.7462462 # check get same result as in your question
> y <- boot(x, gini, 500)
> quantile(y$t, probs=c(0.025, 0.975))
     2.5%     97.5% 
0.6353158 0.7717868 
> plot(density(y$t))

Je n'ai pas joint le graphique généré à la fin, mais cela montre que l'intervalle de confiance est très asymétrique, donc utiliser une méthode comme +/- 1,96 * se pour un intervalle de confiance sera trompeur. Je ne suis pas un fan des méthodes jackknife pour les intervalles de confiance principalement pour cette raison; jackknife a été inventé comme une technique de réduction du biais pour les estimations ponctuelles, tandis que les intervalles de confiance sont intrinsèques à l'idée globale du bootstrap.


N=14
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.