使用从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图并问,这足够正常吗?
因此,让我们做一个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
直线上对齐,则意味着经验分布与理论分布匹配,在这种情况下为正态分布。