Gini-Koeffizient und Fehlergrenzen

11

Ich habe zu jedem Zeitpunkt eine Zeitreihe von Daten mit N = 14 Zählungen und möchte den Gini-Koeffizienten und einen Standardfehler für diese Schätzung zu jedem Zeitpunkt berechnen.

Da ich zu jedem Zeitpunkt nur N = 14 Zählungen habe, berechnete ich die Jackknife-Varianz, dh aus Gleichung 7 von Tomson Ogwang 'Eine bequeme Methode zur Berechnung des Gini-Index und seines' Standardfehlers ' . Wobei der Gini-Koeffizient der N-Werte ohne Element und der Mittelwert von .var(G)=n1n×k=1n(G(n,k)G¯(n))2G(n,k)kG¯(x)G(n,k)

Direkte naive Implementierung der obigen Formel für Varianz.

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

Ist dies ein vernünftiger Ansatz für ein kleines N? Irgendwelche anderen Vorschläge?

Sean
quelle
Möglicherweise können Sie die tatsächlichen Berechnungen, die Sie verwenden, sowohl für die Stichprobenschätzung als auch für den Standardfehler hinzufügen, da viele Personen unter dem angegebenen Link möglicherweise keinen Zugriff auf das Papier haben.
Kardinal

Antworten:

5

Ein Problem besteht darin, dass bei dieser kleinen Stichprobengröße und einer komplexen Statistik (Gini-Koeffizient) die Wahrscheinlichkeitsverteilung Ihrer Statistik sicherlich nicht annähernd normal ist. Daher kann der "Standardfehler" irreführend sein, wenn Sie damit Konfidenzintervalle erstellen möchten oder Hypothesentests, die auf Normalität beruhen.

Ich hätte gedacht, ein Perzentil-Bootstrap wäre eine bessere Methode und einfacher zu implementieren. Zum Beispiel:

> 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))

Ich habe den bis zum Ende generierten Plot nicht angehängt, aber er zeigt, dass das Konfidenzintervall sehr asymmetrisch ist. Daher ist die Verwendung einer Methode wie +/- 1,96 * se für ein Konfidenzintervall irreführend. Ich bin hauptsächlich aus diesem Grund kein Fan von Jackknife-Methoden für Konfidenzintervalle. Jackknife wurde als Bias-Reduction-Technik für Punktschätzungen erfunden, während Konfidenzintervalle der gesamten Idee des Bootstraps eigen sind.

Peter Ellis
quelle
Dies ist in der Tat einer der Punkte des Originalpapiers - die Methode wurde entwickelt, um den Rechenaufwand für die Verwendung von Jackknife zur Berechnung von Gini-SEs zu verringern. Mit gibt es kaum eine Belastung. N=14
MichaelChirico