Coefficiente gini e limiti di errore


11

Ho una serie temporale di dati con conteggi N = 14 in ciascun punto temporale e desidero calcolare il coefficiente di Gini e un errore standard per questa stima in ogni punto temporale.

Dato che ho solo N = 14 conteggi in ogni momento ho proceduto calcolando la varianza del coltello a serramanico, cioè dall'equazione 7 di Tomson Ogwang "Un metodo conveniente per calcolare l'indice Gini e il suo" errore standard " . Dove è il coefficiente di Gini dei valori N senza l'elemento e è la media di .G(n,k)k ˉ G (x)G(n,k)var(sol)=n-1n×ΣK=1n(sol(n,K)-sol¯(n))2sol(n,K)Ksol¯(X)sol(n,K)

Implementazione ingenua diretta della formula precedente per la varianza.

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

È un approccio ragionevole per una piccola N? Altri suggerimenti?


Forse puoi aggiungere i calcoli effettivi che stai utilizzando sia per la stima del campione sia per l'errore standard poiché molte persone potrebbero non avere accesso al documento al link fornito.
cardinale il

Risposte:


5

Un problema sarà che con questa piccola dimensione del campione e una statistica complessa (coefficiente gini) la distribuzione di probabilità della tua statistica non sarà certamente approssimativamente normale, quindi l '"errore standard" potrebbe essere fuorviante se intendi utilizzarlo per creare intervalli di confidenza o test di ipotesi basandosi sulla normalità.

Avrei pensato che un bootstrap percentile sarebbe stato un metodo migliore e più semplice da implementare. Per esempio:

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

Non ho attaccato la trama generata alla fine, ma mostra che l'intervallo di confidenza è molto assimetrico, quindi l'uso di un metodo come +/- 1,96 * se per un intervallo di confidenza sarà fuorviante. Non sono un fan dei metodi di coltello a serramanico per gli intervalli di confidenza principalmente per questo motivo; jackknife è stato inventato come una tecnica di riduzione del bias per le stime puntuali, mentre gli intervalli di confidenza sono intrinseci all'intera idea del bootstrap.


N=14
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.