如何计算基于 RMSE 的准确度度量?我的大型数据集是正态分布的吗?

机器算法验证 正态分布 大数据
2022-03-20 07:56:46

我有几个数千个点的数据集。每个数据集中的值是 X,Y,Z,指的是空间坐标。Z 值表示坐标对 (x,y) 处的高程差异。

通常在我的 GIS 领域中,高程误差在 RMSE 中通过将地面实况点减去测量点(LiDAR 数据点)来引用。通常至少使用 20 个地面实况检查点。使用此 RMSE 值,根据 NDEP(国家数字高程指南)和 FEMA 指南,可以计算出准确度度量:准确度 = 1.96*RMSE。

该精度表示为:“基本垂直精度是可以公平地评估和比较数据集之间的垂直精度的值。基本精度是在 95% 的置信水平下计算的,作为垂直 RMSE 的函数。”

我知道正态分布曲线下 95% 的区域位于 1.96*std.deviation 之内,但这与 RMSE 无关。

通常我会问这个问题:使用从 2 个数据集计算的 RMSE,我如何将 RMSE 与某种精度联系起来(即 95% 的数据点在 +/- X cm 内)?此外,我如何确定我的数据集是否使用适用于如此大数据集的测试进行正态分布?什么是正态分布的“足够好”?所有测试的 p<0.05 是否应该符合正态分布的形状?


我在以下论文中找到了有关此主题的一些非常好的信息:

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

1个回答

使用从 2 个数据集计算的 RMSE,我如何将 RMSE 与某种精度联系起来(即 95% 的数据点在 +/- X cm 内)?

看看一个几乎重复的问题:RMSE 的置信区间

我的大型数据集是正态分布的吗?

一个好的开始是观察z值的经验分布。这是一个可重现的例子。

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

在此处输入图像描述

乍一看,它看起来很正常,对吧?(实际上,我们知道这是正常的,因为rnorm我们使用的命令)。

如果想分析数据集上的小样本,可以使用 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

也可以在不同的小样本上多次重复 SW 测试,然后查看p-values.

请注意,大型数据集的正态性测试并不像Greg Snow 提供的 答案中所解释的那么有用。

另一方面,对于非常大的数据集,中心极限定理开始发挥作用,对于常见的分析(回归、t 检验……),你真的不在乎人口是否是正态分布的。

好的经验法则是做一个 qq-plot 并问,这够正常吗?

所以,让我们做一个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")

在此处输入图像描述

如果点在y=x直线上对齐,则表示经验分布与理论分布相匹配,在这种情况下为正态分布。