A) Qual è il miglior indice singolo del grado in cui i dati violano la normalità?
B) Oppure è meglio parlare di più indici di violazione della normalità (ad esempio, asimmetria, curtosi, prevalenza anomala)?
Vorrei votare per B. Diverse violazioni hanno conseguenze diverse. Ad esempio, distribuzioni unimodali e simmetriche con code pesanti rendono i tuoi CI molto ampi e presumibilmente riducono il potere di rilevare eventuali effetti. La media, tuttavia, colpisce ancora il valore "tipico". Per distribuzioni molto distorte, la media, ad esempio, potrebbe non essere un indice molto sensibile del "valore tipico".
C) Come si possono calcolare gli intervalli di confidenza (o forse un approccio bayesiano) per l'indice?
Non conosco le statistiche bayesiane, ma riguardo al test classico di normalità, vorrei citare Erceg-Hurn et al. (2008) [2]:
Un altro problema è che i test di assunzione hanno i loro presupposti. I test di normalità di solito presuppongono che i dati siano omoscedastici; i test di omoscedasticità presuppongono che i dati siano normalmente distribuiti. Se vengono violate le ipotesi di normalità e omoscedasticità, la validità delle prove di assunzione può essere seriamente compromessa. Statistici di spicco hanno descritto i test di ipotesi (ad esempio, il test di Levene, il test di Kolmogorov – Smirnov) integrati in software come SPSS come fatalmente imperfetti e hanno raccomandato di non utilizzare mai questi test (D'Agostino, 1986; Glass & Hopkins, 1996).
D) Che tipo di etichette verbali potresti assegnare ai punti su quell'indice per indicare il grado di violazione della normalità (ad esempio, lieve, moderato, forte, estremo, ecc.)?
Micceri (1989) [1] ha fatto un'analisi di 440 serie di dati su larga scala in psicologia. Ha valutato la simmetria e il peso della coda e ha definito criteri ed etichette. Le etichette per l'asimmetria vanno da 'relativamente simmetrica' a 'moderata -> estrema -> asimmetria esponenziale'. Le etichette per il peso della coda vanno da "Uniforme -> inferiore a gaussiana -> Informazioni su gaussiano -> Moderato -> Estremo -> Doppia contaminazione esponenziale". Ogni classificazione si basa su criteri multipli e solidi.
Scoprì che da questi 440 set di dati solo il 28% era relativamente simmetrico e solo il 15% riguardava i pesi della coda gaussiani. Quindi il bel titolo del documento:
L'unicorno, la curva normale e altre creature improbabili
Ho scritto una Rfunzione che valuta automaticamente i criteri di Micceri e stampa anche le etichette:
# This function prints out the Micceri-criteria for tail weight and symmetry of a distribution
micceri <- function(x, plot=FALSE) {
library(fBasics)
QS <- (quantile(x, prob=c(.975, .95, .90)) - median(x)) / (quantile(x, prob=c(.75)) - median(x))
n <- length(x)
x.s <- sort(x)
U05 <- mean(x.s[(.95*n ):n])
L05 <- mean(x.s[1:(.05*n)])
U20 <- mean(x.s[(.80*n):n])
L20 <- mean(x.s[1:(.20*n)])
U50 <- mean(x.s[(.50*n):n])
L50 <- mean(x.s[1:(.50*n)])
M25 <- mean(x.s[(.375*n):(.625*n)])
Q <- (U05 - L05)/(U50 - L50)
Q1 <- (U20 - L20)/(U50 - L50)
Q2 <- (U05 - M25)/(M25 - L05)
# mean/median interval
QR <- quantile(x, prob=c(.25, .75)) # Interquartile range
MM <- abs(mean(x) - median(x)) / (1.4807*(abs(QR[2] - QR[1])/2))
SKEW <- skewness(x)
if (plot==TRUE) plot(density(x))
tail_weight <- round(c(QS, Q=Q, Q1=Q1), 2)
symmetry <- round(c(Skewness=SKEW, MM=MM, Q2=Q2), 2)
cat.tail <- matrix(c(1.9, 2.75, 3.05, 3.9, 4.3,
1.8, 2.3, 2.5, 2.8, 3.3,
1.6, 1.85, 1.93, 2, 2.3,
1.9, 2.5, 2.65, 2.73, 3.3,
1.6, 1.7, 1.8, 1.85, 1.93), ncol=5, nrow=5)
cat.sym <- matrix(c(0.31, 0.71, 2,
0.05, 0.18, 0.37,
1.25, 1.75, 4.70), ncol=3, nrow=3)
ts <- c()
for (i in 1:5) {ts <- c(ts, sum(abs(tail_weight[i]) > cat.tail[,i]) + 1)}
ss <- c()
for (i in 1:3) {ss <- c(ss, sum(abs(symmetry[i]) > cat.sym[,i]) + 1)}
tlabels <- c("Uniform", "Less than Gaussian", "About Gaussian", "Moderate contamination", "Extreme contamination", "Double exponential contamination")
slabels <- c("Relatively symmetric", "Moderate asymmetry", "Extreme asymmetry", "Exponential asymmetry")
cat("Tail weight indexes:\n")
print(tail_weight)
cat(paste("\nMicceri category:", tlabels[max(ts)],"\n"))
cat("\n\nAsymmetry indexes:\n")
print(symmetry)
cat(paste("\nMicceri category:", slabels[max(ss)]))
tail.cat <- factor(max(ts), levels=1:length(tlabels), labels=tlabels, ordered=TRUE)
sym.cat <- factor(max(ss), levels=1:length(slabels), labels=slabels, ordered=TRUE)
invisible(list(tail_weight=tail_weight, symmetry=symmetry, tail.cat=tail.cat, sym.cat=sym.cat))
}
Ecco un test per la distribuzione normale standard, una con 8 df e un log-normale:t
> micceri(rnorm(10000))
Tail weight indexes:
97.5% 95% 90% Q Q1
2.86 2.42 1.88 2.59 1.76
Micceri category: About Gaussian
Asymmetry indexes:
Skewness MM.75% Q2
0.01 0.00 1.00
Micceri category: Relatively symmetric
> micceri(rt(10000, 8))
Tail weight indexes:
97.5% 95% 90% Q Q1
3.19 2.57 1.94 2.81 1.79
Micceri category: Extreme contamination
Asymmetry indexes:
Skewness MM.75% Q2
-0.03 0.00 0.98
Micceri category: Relatively symmetric
> micceri(rlnorm(10000))
Tail weight indexes:
97.5% 95% 90% Q Q1
6.24 4.30 2.67 3.72 1.93
Micceri category: Double exponential contamination
Asymmetry indexes:
Skewness MM.75% Q2
5.28 0.59 8.37
Micceri category: Exponential asymmetry
[1] Micceri, T. (1989). L'unicorno, la curva normale e altre creature improbabili. Bollettino psicologico, 105 , 156-166. DOI: 10,1037 / 0033-2909.105.1.156
[2] Erceg-Hurn, DM e Mirosevich, VM (2008). Metodi statistici moderni e robusti: un modo semplice per massimizzare l'accuratezza e la potenza della tua ricerca. Psicologo americano, 63 , 591-601.