Comment calculer une mesure de précision basée sur RMSE? Mon grand ensemble de données est-il normalement distribué?

9

J'ai plusieurs jeux de données de l'ordre de milliers de points. Les valeurs de chaque jeu de données sont X, Y, Z faisant référence à une coordonnée dans l'espace. La valeur Z représente une différence d'élévation à la paire de coordonnées (x, y).

Généralement, dans mon domaine SIG, l'erreur d'élévation est référencée dans RMSE en soustrayant le point de vérité terrain à un point de mesure (point de données LiDAR). Habituellement, un minimum de 20 points de contrôle de vérification au sol sont utilisés. En utilisant cette valeur RMSE, selon les directives NDEP (National Digital Elevation Guidelines) et FEMA, une mesure de précision peut être calculée: Précision = 1,96 * RMSE.

Cette précision est la suivante: "La précision verticale fondamentale est la valeur par laquelle la précision verticale peut être évaluée et comparée équitablement entre les ensembles de données. La précision fondamentale est calculée au niveau de confiance de 95% en fonction du RMSE vertical."

Je comprends que 95% de l'aire sous une courbe de distribution normale se situe à l'intérieur de 1,96 * écart-type, mais cela n'est pas lié à RMSE.

En général, je pose cette question: en utilisant RMSE calculé à partir de 2 ensembles de données, comment puis-je relier RMSE à une sorte de précision (c'est-à-dire que 95% de mes points de données sont à +/- X cm)? De plus, comment puis-je déterminer si mon ensemble de données est normalement distribué à l'aide d'un test qui fonctionne bien avec un si grand ensemble de données? Qu'est-ce qui est "assez bon" pour une distribution normale? Est-ce que p <0,05 pour tous les tests, ou doit-il correspondre à la forme d'une distribution normale?


J'ai trouvé de très bonnes informations sur ce sujet dans l'article suivant:

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

Matthew Bilskie
la source
4
Fais attention! Votre utilisation de ks.test est incorrecte. Selon la page d'aide , vous devez utiliser «pnorm» au lieu de «dnorm». En outre, la définition des paramètres de la distribution de comparaison sur la moyenne et l'écart-type de l'échantillon lui-même augmentera considérablement la valeur de p: "Si un test à échantillon unique est utilisé, les paramètres spécifiés dans ... doivent être prédéfinis et non estimés à partir de les données."
whuber
3
Eh bien, en fait, cette formule ne vous donnera pas d'intervalle de confiance: elle sera beaucoup trop grande pour cela. C'est vraiment une façon grossière (mais standard) d'estimer un intervalle de tolérance, qui est le milieu de 95% de l'ensemble de la population de différences. Il y a de bonnes raisons de supposer que les différences n'auront pas une distribution normale: des différences absolues plus importantes ont tendance à être associées à des pentes topographiques plus importantes. En supposant que vos 4000 points sont un échantillon aléatoire de ces différences, pourquoi ne déclarez-vous pas simplement leurs percentiles 2,5 et 97,5?
whuber
4
Vos données constituent un échantillon statistique des altitudes qui pourraient être mesurées. Lorsque vous parlez de «précision», vous affirmez à quel point vos DEM représentent la population totale d'altitude. Dans votre cas, il est impossible d'évaluer l'exactitude en comparant les ensembles de données: vous devez «vérifier sur le terrain» vos données. Ainsi, les lignes directrices parlent vraiment d' un accord relatif de deux ensembles de données. Enfin, leur utilisation du "niveau de confiance" est erronée, comme je l'ai expliqué précédemment. J'accepte que vous deviez travailler dans le cadre de directives horribles comme celle-ci, mais vous méritez de savoir ce qui est correct.
whuber
3
Cela commence à ressembler à une question utile pour vous. Parce que vous n'avez pas encore reçu de réponse, pourquoi ne modifiez-vous pas complètement la question actuelle pour incorporer les informations que vous avez divulguées dans ces commentaires? Je suggérerais de l'élargir quelque peu: après avoir cité les lignes directrices (pour montrer quel type de méthodes sont généralement utilisées dans votre domaine), vous pourriez vous demander de manière assez générale comment utiliser la distribution des paires ordonnées de différences d'altitude pour évaluer la précision (en supposant une des ensembles de données est la référence).
whuber
2
Tous: Mise à jour de mon message principal et de ma question pour refléter les changements apportés aux commentaires.
Matthew Bilskie

Réponses:

1

En utilisant RMSE calculé à partir de 2 ensembles de données, comment puis-je relier RMSE à une sorte de précision (c'est-à-dire que 95% de mes points de données sont à +/- X cm)?

Jetez un oeil à une question presque en double: intervalle de confiance de RMSE ?

Mon grand ensemble de données est-il normalement distribué?

Un bon début serait d'observer la distribution empirique des zvaleurs. Voici un exemple reproductible.

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

entrez la description de l'image ici

À première vue, cela semble normal, non? (en fait, nous savons que c'est normal parce que la rnormcommande que nous avons utilisée).

Si l'on veut analyser de petits échantillons sur l'ensemble de données, il y a le test de normalité de Shapiro-Wilk.

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

On peut également répéter le test SW plusieurs fois sur différents petits échantillons, puis regarder la distribution de p-values.

Sachez que les tests de normalité sur de grands ensembles de données ne sont pas aussi utiles que cela est expliqué dans cette réponse fournie par Greg Snow.

D'un autre côté, avec des ensembles de données très volumineux, le théorème central limite entre en jeu et pour les analyses courantes (régression, tests t, ...), peu importe si la population est normalement distribuée ou non.

La bonne règle est de faire un qq-plot et de demander, est-ce assez normal?

Alors, faisons un 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")

entrez la description de l'image ici

Si des points sont alignés sur la y=xligne, cela signifie que la distribution empirique correspond à la distribution théorique, qui dans ce cas est la distribution normale.

Andre Silva
la source