Como calcular uma medida de precisão com base no RMSE? Meu grande conjunto de dados é normalmente distribuído?

9

Eu tenho vários conjuntos de dados da ordem de milhares de pontos. Os valores em cada conjunto de dados são X, Y, Z, referindo-se a uma coordenada no espaço. O valor Z representa uma diferença na elevação no par de coordenadas (x, y).

Normalmente, no meu campo de GIS, o erro de elevação é referenciado no RMSE subtraindo o ponto de verdade da terra para um ponto de medida (ponto de dados LiDAR). Geralmente, são utilizados no mínimo 20 pontos de verificação de aterramento. Usando esse valor RMSE, de acordo com as diretrizes NDEP (National Digital Elevation Guidelines) e FEMA, uma medida de precisão pode ser calculada: Exatidão = 1,96 * RMSE.

Essa precisão é declarada como: "A precisão vertical fundamental é o valor pelo qual a precisão vertical pode ser equitativamente avaliada e comparada entre conjuntos de dados. A precisão fundamental é calculada no nível de confiança de 95% como uma função do RMSE vertical".

Entendo que 95% da área sob uma curva de distribuição normal está dentro de 1,96 * std.deviation, no entanto, isso não se refere ao RMSE.

Geralmente, estou fazendo a seguinte pergunta: Usando o RMSE calculado a partir de 2 conjuntos de dados, como posso relacionar o RMSE a algum tipo de precisão (ou seja, 95% dos meus pontos de dados estão dentro de +/- X cm)? Além disso, como posso determinar se meu conjunto de dados é normalmente distribuído usando um teste que funciona bem com um conjunto de dados tão grande? O que é "bom o suficiente" para uma distribuição normal? Deveria p <0,05 para todos os testes ou deveria corresponder ao formato de uma distribuição normal?


Encontrei algumas informações muito boas sobre esse tópico no seguinte artigo:

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

Matthew Bilskie
fonte
4
Cuidado! Seu uso do ks.test está incorreto. De acordo com a página de ajuda , você precisa usar 'pnorm' em vez de 'dnorm'. Além disso, definir os parâmetros da distribuição de comparação com a média e o DP da própria amostra aumentará substancialmente o valor-p: "Se um teste de amostra única for usado, os parâmetros especificados em ... devem ser pré-especificados e não estimados a partir de os dados."
whuber
3
Bem, na verdade, essa fórmula não fornecerá um intervalo de confiança: será muito grande para isso. É realmente uma maneira grosseira (mas padrão) de estimar um intervalo de tolerância, que é o meio 95% de toda a população de diferenças. Existem boas razões para supor que as diferenças não terão uma distribuição normal: diferenças absolutas maiores tendem a ser associadas a maiores inclinações topográficas. Supondo que seus 4000 pontos sejam uma amostra aleatória dessas diferenças, por que você não informa os percentis 2,5 e 97,5?
whuber
4
Seus dados formam uma amostra estatística das elevações que podem ser medidas. Quando você fala sobre "precisão", está reivindicando a proximidade com que seus DEMs representam toda a população de elevações. No seu caso, é impossível avaliar a precisão comparando conjuntos de dados: você precisa "colocar em campo" seus dados. Assim, as diretrizes estão realmente falando sobre concordância relativa de dois conjuntos de dados. Finalmente, o uso do "nível de confiança" é equivocado, como expliquei anteriormente. Eu aceito que você tenha que trabalhar dentro da estrutura de orientações terríveis como essa, mas você merece saber o que é correto.
whuber
3
Isso está começando a parecer uma pergunta útil para você. Como você ainda não recebeu nenhuma resposta, por que não edita completamente a pergunta atual para incorporar as informações que você divulgou nesses comentários? Eu sugeriria ampliar um pouco: depois de citar as diretrizes (para mostrar que tipo de métodos geralmente são empregados em seu campo), você pode perguntar geralmente como usar a distribuição dos pares ordenados de diferenças nas elevações para avaliar a precisão (assumindo uma dos conjuntos de dados é a referência).
whuber
2
Todos: Atualizei minha postagem principal e minha pergunta para refletir as alterações dos comentários.
Matthew Bilskie

Respostas:

1

Usando o RMSE calculado a partir de 2 conjuntos de dados, como posso relacionar o RMSE com algum tipo de precisão (ou seja, 95% dos meus pontos de dados estão dentro de +/- X cm)?

Dê uma olhada em uma pergunta quase duplicada: Intervalo de confiança do RMSE ?

Meu grande conjunto de dados é normalmente distribuído?

Um bom começo seria observar a distribuição empírica dos zvalores. Aqui está um exemplo reproduzível.

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

insira a descrição da imagem aqui

À primeira vista, parece normal, certo? (na verdade, sabemos que é normal porque o rnormcomando que usamos).

Se alguém quiser analisar pequenas amostras sobre o conjunto de dados, há o Teste de Normalidade 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

Também se pode repetir o teste SW muitas vezes em diferentes amostras pequenas e, em seguida, analisar a distribuição de p-values.

Esteja ciente de que os testes de normalidade em grandes conjuntos de dados não são tão úteis, como é explicado nesta resposta fornecida por Greg Snow.

Por outro lado, com conjuntos de dados muito grandes, o teorema do limite central entra em cena e, para análises comuns (regressão, testes t, ...), você realmente não se importa se a população é normalmente distribuída ou não.

A boa regra geral é fazer um gráfico de qq e perguntar: isso é normal o suficiente?

Então, vamos fazer um gráfico QQ:

#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")

insira a descrição da imagem aqui

Se os pontos estão alinhados na y=xlinha, significa que a distribuição empírica corresponde à distribuição teórica, que neste caso é a distribuição normal.

Andre Silva
fonte