Wie berechnet man ein Genauigkeitsmaß basierend auf RMSE? Ist mein großer Datensatz normal verteilt?


9

Ich habe mehrere Datensätze in der Größenordnung von Tausenden von Punkten. Die Werte in jedem Datensatz sind X, Y, Z und beziehen sich auf eine Koordinate im Raum. Der Z-Wert repräsentiert einen Höhenunterschied am Koordinatenpaar (x, y).

In meinem GIS-Bereich wird der Höhenfehler in RMSE normalerweise durch Subtrahieren des Grundwahrheitspunkts von einem Messpunkt (LiDAR-Datenpunkt) referenziert. Normalerweise werden mindestens 20 Kontrollpunkte für die Bodenbearbeitung verwendet. Mit diesem RMSE-Wert kann gemäß den NDEP-Richtlinien (National Digital Elevation Guidelines) und den FEMA-Richtlinien ein Maß für die Genauigkeit berechnet werden: Genauigkeit = 1,96 * RMSE.

Diese Genauigkeit wird wie folgt angegeben: "Die grundlegende vertikale Genauigkeit ist der Wert, anhand dessen die vertikale Genauigkeit gerecht bewertet und zwischen Datensätzen verglichen werden kann. Die grundlegende Genauigkeit wird bei einem Konfidenzniveau von 95 Prozent als Funktion des vertikalen RMSE berechnet."

Ich verstehe, dass 95% der Fläche unter einer Normalverteilungskurve innerhalb von 1,96 * Standardabweichung liegen, dies bezieht sich jedoch nicht auf RMSE.

Im Allgemeinen stelle ich folgende Frage: Wie kann ich mit RMSE, das aus 2 Datensätzen berechnet wurde, RMSE mit einer bestimmten Genauigkeit in Beziehung setzen (dh 95 Prozent meiner Datenpunkte liegen innerhalb von +/- X cm)? Wie kann ich mithilfe eines Tests, der mit einem so großen Datensatz gut funktioniert, feststellen, ob mein Datensatz normal verteilt ist? Was ist "gut genug" für eine Normalverteilung? Sollte p <0,05 für alle Tests sein oder sollte es der Form einer Normalverteilung entsprechen?


Ich habe im folgenden Artikel einige sehr gute Informationen zu diesem Thema gefunden:

http://paulzandbergen.com/PUBLICATIONS_files/Zandbergen_TGIS_2008.pdf


4
Achtung! Ihre Verwendung von ks.test ist falsch. Laut der Hilfeseite , müssen Sie ‚Pnorm‘ anstelle von ‚dnorm‘ verwenden. Wenn Sie die Parameter der Vergleichsverteilung auf den Mittelwert und die SD der Probe selbst einstellen, wird der p-Wert erheblich erhöht: "Wenn ein Einzelstichproben-Test verwendet wird, müssen die in ... angegebenen Parameter vorab festgelegt und nicht geschätzt werden die Daten."
whuber

3
Eigentlich gibt Ihnen diese Formel kein Konfidenzintervall: Dafür ist sie viel zu groß. Es ist wirklich eine grobe (aber übliche) Methode, ein Toleranzintervall zu schätzen , das die mittleren 95% der gesamten Population von Unterschieden ausmacht. Es gibt gute Gründe anzunehmen, dass die Unterschiede keine Normalverteilung aufweisen: Größere absolute Unterschiede sind tendenziell mit größeren topografischen Steigungen verbunden. Angenommen, Ihre 4000 Punkte sind eine zufällige Stichprobe dieser Unterschiede. Warum geben Sie nicht einfach ihre 2,5- und 97,5-Perzentile an?
whuber

4
Ihre Daten bilden eine statistische Stichprobe der Höhen, die gemessen werden könnten. Wenn Sie von "Genauigkeit" sprechen, behaupten Sie, wie genau Ihre DEMs die gesamte Population von Höhen repräsentieren . In Ihrem Fall ist es unmöglich, die Genauigkeit durch Vergleichen von Datensätzen zu beurteilen: Sie müssen Ihre Daten "feldwahr" machen. In den Richtlinien geht es also wirklich um die relative Übereinstimmung zweier Datensätze. Schließlich ist ihre Verwendung des "Konfidenzniveaus" falsch, wie ich zuvor erklärt habe. Ich akzeptiere, dass Sie im Rahmen einer solchen schrecklichen Anleitung arbeiten müssen, aber Sie verdienen es zu wissen, was richtig ist.
whuber

3
Das klingt nach einer nützlichen Frage für Sie. Da Sie noch keine Antworten erhalten haben, bearbeiten Sie die aktuelle Frage nicht vollständig, um die Informationen aufzunehmen, die Sie in diesen Kommentaren angegeben haben. Ich würde vorschlagen, es etwas zu erweitern: Nachdem Sie die Richtlinien zitiert haben (um zu zeigen, welche Methoden normalerweise in Ihrem Bereich angewendet werden), könnten Sie ganz allgemein fragen, wie die Verteilung der geordneten Paare von Höhenunterschieden zur Beurteilung der Genauigkeit verwendet werden soll (unter der Annahme einer) der Datensätze ist die Referenz).
whuber

2
Alle: Mein Hauptbeitrag und meine Frage wurden aktualisiert, um die Änderungen aus den Kommentaren widerzuspiegeln.
Matthew Bilskie

Antworten:


1

Wie kann ich mit RMSE, das aus 2 Datensätzen berechnet wurde, RMSE mit einer bestimmten Genauigkeit in Beziehung setzen (dh 95 Prozent meiner Datenpunkte liegen innerhalb von +/- X cm)?

Schauen Sie sich eine nahezu doppelte Frage an: Konfidenzintervall von RMSE ?

Ist mein großer Datensatz normal verteilt?

Ein guter Anfang wäre die Beobachtung der empirischen zWerteverteilung. Hier ist ein reproduzierbares Beispiel.

set.seed(1)
z <- rnorm(2000,2,3)
z.difference <- data.frame(z=z)

library(ggplot2)

ggplot(z.difference,aes(x=z)) + 
  geom_histogram(binwidth=1,aes(y=..density..), fill="white", color="black") +
  ylab("Density") + xlab("Elevation differences (meters)") +
  theme_bw() + 
  coord_flip()

Geben Sie hier die Bildbeschreibung ein

Auf den ersten Blick sieht es normal aus, oder? (Eigentlich wissen wir, dass es normal ist, weil der rnormBefehl, den wir verwendet haben).

Wenn man kleine Proben über den Datensatz analysieren möchte, gibt es den Shapiro-Wilk-Normalitätstest.

z_sample <- sample(z.difference$z,40,replace=T)
shapiro.test(z_sample) #high p-value indicates the data is normal (null hypothesis)

    Shapiro-Wilk normality test

data:  z_sample
W = 0.98618, p-value = 0.8984 #normal

Man kann den SW-Test auch viele Male über verschiedene kleine Proben wiederholen und dann die Verteilung von betrachten p-values.

Beachten Sie, dass Normalitätstests für große Datenmengen nicht so nützlich sind, wie in dieser Antwort von Greg Snow erläutert .

Andererseits kommt bei wirklich großen Datensätzen der zentrale Grenzwertsatz ins Spiel, und für gängige Analysen (Regression, T-Tests, ...) ist es wirklich egal, ob die Population normal verteilt ist oder nicht.

Die gute Faustregel ist, ein QQ-Diagramm zu erstellen und zu fragen, ob dies normal genug ist.

Machen wir also einen QQ-Plot:

#qq-plot (quantiles from empirical distribution - quantiles from theoretical distribution)
mean_z <- mean(z.difference$z)
sd_z <- sd(z.difference$z)
set.seed(77)
normal <- rnorm(length(z.difference$z), mean = mean_z, sd = sd_z)

qqplot(normal, z.difference$z, xlab="Theoretical", ylab="Empirical")

Geben Sie hier die Bildbeschreibung ein

Wenn Punkte in der y=xLinie ausgerichtet sind , bedeutet dies, dass die empirische Verteilung mit der theoretischen Verteilung übereinstimmt, die in diesem Fall die Normalverteilung ist.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.