Come calcolare una misura di precisione basata su RMSE? Il mio set di dati di grandi dimensioni è normalmente distribuito?


9

Ho diversi set di dati nell'ordine di migliaia di punti. I valori in ciascun set di dati sono X, Y, Z riferiti a una coordinata nello spazio. Il valore Z rappresenta una differenza di elevazione nella coppia di coordinate (x, y).

In genere nel mio campo di GIS, l'errore di elevazione viene indicato in RMSE sottraendo il punto di verità di terra a un punto di misura (punto dati LiDAR). Di solito vengono utilizzati almeno 20 punti di controllo di verifica della verità. Utilizzando questo valore RMSE, secondo le linee guida NDEP (National Digital Elevation Guidelines) e FEMA, è possibile calcolare una misura di accuratezza: Precisione = 1,96 * RMSE.

Questa precisione è dichiarata come: "L'accuratezza verticale fondamentale è il valore con cui l'accuratezza verticale può essere equamente valutata e confrontata tra i set di dati. L'accuratezza fondamentale è calcolata al livello di confidenza del 95 percento in funzione dell'RMSE verticale."

Comprendo che il 95% dell'area sotto una normale curva di distribuzione si trova all'interno di una deviazione standard di 1,96 *, tuttavia ciò non riguarda RMSE.

In genere, sto ponendo questa domanda: utilizzando RMSE calcolato da 2 set di dati, come posso correlare RMSE a una certa precisione (ovvero il 95 percento dei miei punti dati si trova entro +/- X cm)? Inoltre, come posso determinare se il mio set di dati è normalmente distribuito usando un test che funziona bene con un set di dati così grande? Cosa è "abbastanza buono" per una distribuzione normale? P <0,05 per tutti i test o dovrebbe corrispondere alla forma di una distribuzione normale?


Ho trovato alcune ottime informazioni su questo argomento nel seguente documento:

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


4
Attento! L'uso di ks.test non è corretto. Secondo la pagina di aiuto , è necessario utilizzare "pnorm" anziché "dnorm". Inoltre, impostando i parametri della distribuzione di confronto sulla media e sulla SD del campione stesso si aumenterà sostanzialmente il valore p: "Se si utilizza un test a campione singolo, i parametri specificati in ... devono essere pre-specificati e non stimati da i dati."
whuber

3
Bene, in realtà, quella formula non ti darà un intervallo di confidenza: sarà troppo grande per quello. È davvero un modo grezzo (ma standard) per stimare un intervallo di tolleranza, che è il 95% medio dell'intera popolazione di differenze. Vi sono buone ragioni per supporre che le differenze non abbiano una distribuzione normale: differenze assolute maggiori tendono ad essere associate a pendenze topografiche più grandi. Supponendo che i tuoi 4000 punti siano un campione casuale di tali differenze, perché non riportare semplicemente i loro percentili 2,5 e 97,5?
whuber

4
I tuoi dati formano un campione statistico delle quote che potrebbero essere misurate. Quando parli di "accuratezza", stai affermando quanto i tuoi DEM rappresentino da vicino l' intera popolazione di elevazioni. Nel tuo caso, è impossibile valutare l'accuratezza confrontando i set di dati: devi "field-verità" i tuoi dati. Pertanto, le linee guida parlano davvero del relativo accordo di due set di dati. Infine, il loro uso del "livello di confidenza" è sbagliato, come ho spiegato in precedenza. Accetto che devi lavorare nell'ambito di una guida terribile come questa, ma meriti di sapere cosa è corretto.
whuber

3
Sta iniziando a sembrare una domanda utile per te. Poiché non hai ancora ricevuto alcuna risposta, perché non modifichi completamente la domanda corrente per incorporare le informazioni che hai rivelato in questi commenti? Suggerirei di ampliarlo un po ': dopo aver citato le linee guida (per mostrare che tipo di metodi sono di solito impiegati nel tuo campo), potresti chiedere abbastanza in generale come utilizzare la distribuzione delle coppie ordinate di differenze in elevazioni per valutare l'accuratezza (ipotizzando una dei set di dati è il riferimento).
whuber

2
Tutto: aggiornato il mio post principale e la domanda per riflettere le modifiche apportate dai commenti.
Matthew Bilskie,

Risposte:


1

Utilizzando RMSE calcolato da 2 set di dati, come posso correlare RMSE a una certa precisione (ovvero il 95 percento dei miei punti dati si trova entro +/- X cm)?

Dai un'occhiata a una domanda quasi duplicata: intervallo di confidenza di RMSE ?

Il mio set di dati di grandi dimensioni è normalmente distribuito?

Un buon inizio sarebbe osservare la distribuzione empirica dei zvalori. Ecco un esempio riproducibile.

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

inserisci qui la descrizione dell'immagine

A prima vista, sembra normale, giusto? (in realtà, sappiamo che è normale perché il rnormcomando che abbiamo usato).

Se si desidera analizzare piccoli campioni sull'insieme di dati, c'è il test di normalità di 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

Si può anche ripetere più volte il test SW su diversi piccoli campioni e quindi guardare la distribuzione di p-values.

Tenere presente che i test di normalità su set di dati di grandi dimensioni non sono così utili come è spiegato in questa risposta fornita da Greg Snow.

D'altra parte, con insiemi di dati molto grandi entra in gioco il teorema del limite centrale e per le analisi comuni (regressione, t-test, ...) non ti interessa davvero se la popolazione è normalmente distribuita o meno.

La buona regola empirica è fare una trama qq e chiedere, è abbastanza normale?

Quindi, facciamo 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")

inserisci qui la descrizione dell'immagine

Se i punti sono allineati nella y=xlinea significa che la distribuzione empirica corrisponde alla distribuzione teorica, che in questo caso è la distribuzione normale.

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.