Hier ist ein QQ-Diagramm für meine Stichprobe (beachten Sie die logarithmische Y-Achse). :
Wie von whuber hervorgehoben, weist dies darauf hin, dass die zugrunde liegende Verteilung nach links geneigt ist (der rechte Schwanz ist kürzer).
shapiro.test
Meine Frage ist: Ist dies in der Praxis gut genug für eine weitere Analyse unter der Annahme einer (log-) Normalität? Insbesondere möchte ich Konfidenzintervalle für die Mittelwerte ähnlicher Stichproben nach der Näherungsmethode von Cox und Land berechnen (beschrieben in der Arbeit: Zou, GY, Cindy Yan Huo und Taleban, J. (2009). Einfache Konfidenzintervalle für logarithmische Mittel und ihre Unterschiede zu Umweltanwendungen. Environmetrics 20, 172–180):
ci <- function (x) {
y <- log(x)
n <- length(y)
s2 <- var(y)
m <- mean(y) + s2 / 2
z <- qnorm(1 - 0.05 / 2) # 95%
#z <- qnorm(1 - 0.10 / 2) # 90%
d <- z * sqrt(s2 / n + s2 * s2 / (2 * (n - 1)))
return(c(exp(m - d), exp(m + d)))
}
Ich habe festgestellt, dass die Konfidenzintervalle in der Regel um einen Punkt zentriert sind, der etwas über dem tatsächlichen Stichprobenmittelwert liegt. Beispielsweise:
> mean(x)
[1] 82.3076
> y <- log(x)
> exp(mean(y) + var(y) / 2)
[1] 91.22831
quelle
Antworten:
Diese Daten haben im Vergleich zu einer logarithmischen Normalverteilung einen kurzen Schwanz, ähnlich einer Gammaverteilung:
Trotzdem, weil die Daten sind stark rechtwinklig sind, können wir davon ausgehen, dass die größten Werte eine wichtige Rolle bei der Schätzung des Mittelwerts und seines Konfidenzintervalls spielen. Daher sollten wir damit rechnen, dass ein Lognormal (LN) -Schätzer dazu neigt, den Mittelwert und die beiden Konfidenzgrenzen zu überschätzen .
Lassen Sie uns die üblichen Schätzer überprüfen und zum Vergleich verwenden: den Stichprobenmittelwert und das Konfidenzintervall der Normaltheorie. Beachten Sie, dass sich die üblichen Schätzer nur auf die ungefähre Normalität der Stichprobenmittelwerts und nicht auf die Daten und bei einem so großen Datensatz voraussichtlich gut funktionieren. Dazu benötigen wir eine geringfügige Änderung der
ci
Funktion:Hier ist eine parallele Funktion für die Schätzungen der Normaltheorie:
Auf diesen simulierten Datensatz angewendet sind die Ausgaben
ci.u
Es ist jetzt klar, dass die logarithmischen Verfahren dazu neigen, den Mittelwert und die Vertrauensgrenzen zu überschätzen, während die üblichen Verfahren gute Arbeit leisten. Wir können die Abdeckung der Konfidenzintervallverfahren abschätzen:
Diese Berechnung sagt:
Die LN-Untergrenze deckt in etwa 22,3% der Fälle nicht den wahren Mittelwert ab (anstelle der beabsichtigten 2,5%).
Die übliche Untergrenze wird in etwa 2,3% der Fälle nicht den wahren Mittelwert abdecken, nahe den beabsichtigten 2,5%.
Die LN-Obergrenze überschreitet immer den wahren Mittelwert (anstatt wie beabsichtigt 2,5% der Zeit darunter zu fallen). Dies macht es zu einem zweiseitigen Konfidenzintervall von 100% - (22,3% + 0%) = 77,7% anstelle eines Konfidenzintervalls von 95%.
Die übliche Obergrenze wird in etwa 100 - 96,5 = 3,5% der Fälle den wahren Mittelwert nicht abdecken. Dies ist etwas mehr als der beabsichtigte Wert von 2,5%. Die üblichen Grenzwerte umfassen daher ein zweiseitiges Konfidenzintervall von 100% - (2,3% + 3,5%) = 94,2% anstelle eines Konfidenzintervalls von 95%.
Die Reduzierung der nominalen Abdeckung von 95% auf 77,7% für das logarithmische Normalintervall ist schrecklich. Die Reduzierung auf 94,2% für das übliche Intervall ist überhaupt nicht schlecht und kann auf den Effekt der Schiefe (der Rohdaten, nicht ihrer Logarithmen) zurückgeführt werden.
Wir müssen daraus schließen, dass weitere Analysen des Mittelwerts erfolgen sollten nicht lognormality annehmen.
Achtung! Einige Verfahren (z. B. Vorhersagegrenzen) reagieren empfindlicher auf Schiefe als diese Konfidenzgrenzen für den Mittelwert, sodass ihre verzerrte Verteilung möglicherweise berücksichtigt werden muss. Es ist jedoch unwahrscheinlich, dass logarithmische Verfahren mit diesen Daten für praktisch jede beabsichtigte Analyse gut funktionieren.
quelle
abline()
anstelle vonqqline()
(was eine andere Linie erzeugt) verwenden?trial()
Funktion verwendet ihre Argumente nicht.trial
:trial <- function(y) { x <- sample(y, length(y), TRUE); cbind(ci(x), ci.u(x)) }
. Geben Sie dann nur einen Befehl aussim <- sapply(1:5000, function(i) trial(x))
. Vielleicht möchten Sie die Histogramme der sechs Reihensim
danach untersuchen.