使用具有许多零值的黄土回归

机器算法验证 数据可视化 零通胀 黄土
2022-04-02 19:33:30

我在 Y 上测量了植被覆盖率,并根据 X 上的表面高度(以及因此洪水频率)绘制。植被通常有两个草本层,分别估计。如果仅存在一层,则上层的覆盖率为 0(如果不存在植被,则两者均为 0)。因此,上层在图中有很多零估计。

有两种处理方法:放牧和非放牧(封闭)。

我绘制了一条 95%CI 的黄土曲线,以显示处理之间的总体趋势和差异。但是,我知道黄土是一种非参数方法,但想知道在这种情况下它的使用是否正确,尤其是对于高植被层。

无论零的数量如何,我可以使用具有置信区间的黄土曲线吗?如果不是,我该如何检查在这种情况下是否合适?

在此处输入图像描述

1个回答

除非已经对 Loess 参数进行了交叉验证(通常情况并非如此),否则Loess 置信区间并没有多大意义。当您按照最初的意图使用黄土进行探索时,了解如何控制它将帮助您指导您的探索并更好地解释其结果。


考虑这个对合成数据集的小型研究,它只有0或者1作为回应:这是你情况的一个极端例子。绘制为黑点的数据是伯努利的结果(p)变量(“硬币翻转”),其中p随水平坐标以阻尼正弦方式变化x,如每个面板中的白色参考曲线所示。面板仅因黄土平滑的“跨度”而异,这决定了每个黄土估计的局部性:较小的跨度产生更局部化的估计;也就是说,它们反映了每个最近邻居的响应x远比远方的邻居更有价值。平滑显示为蓝色,其周围的置信带显示为深灰色。

数字

左侧面板使用默认跨度0.75. 这导致每个点的黄土估计取决于图中的大多数点:这些数据非常平滑。在许多情况下,白色图位于阴影置信带之外,显示此置信带可能会产生误导。

很明显,只有最后的跨度0.25平滑度是否接近真实值:这里,白色图形包含在阴影灰色区域内。不幸的是,在实践中,我们无法获得任何真正的基础曲线:这正是我们试图估计的。

所有这三个平滑都是完全有效的,因为它们努力勾勒出响应(“y”)相对于回归量(“x”)的总体趋势。左侧的重度平滑表明响应率大致稳定(平均而言,它是稳定的)。右侧较轻的平滑捕捉更高频率的变化。在实践中,它所显示的是“真实”还是“噪音”可能并不明显。

在实践中,我们从不只接受一个默认的平滑级别:我们改变平滑的数量,正如这里所展示的,以便了解不同级别的局部分辨率的数据。我们还可以改变平滑度,以便创建不同类型的数据视觉描述,引导观察者关注全球趋势(如左图)或局部行为(如右图),我们认为合适。

“检查适当性”的最佳工具是在特定分析或可视化目标的上下文中研究平滑的残差。关于探索性数据分析的好书,例如 John Tukey 的EDA,提供了丰富的计算和分析平滑及其残差的技术。


如果您想进行实验,这里是R创建这些插图的代码。

#
# Generate data.
#
n <- 2e2
x <- 1:n
p <- (sin(x/100 * 2*pi)^2 - 1/2)*exp(-x/n) + 1/2
set.seed(17)
y <- rbinom(n, 1, p)
df <- data.frame(x=x, y=y, p=p)
#
# Set up for drawing.
#
library(ggplot2)
spans <- c(0.75, 0.5, 0.25)
k <- length(spans)
viewports <- lapply(1:k, function(i) 
  grid:::viewport(width=1/k, height=1, x=(i-1/2)/k, y=1/2))
names(viewports) <- spans
#
# Create the plots.
#
g <- ggplot(df, aes(x, y)) + geom_point(aes(x,y), df, alpha=0.25) + 
  coord_cartesian(ylim=c(0,1))
for (i in 1:k) {
  print(g + geom_smooth(method="loess", span=spans[i])  +
    geom_line(aes(x,p), df, color="White", lwd=1) + 
    labs(title=paste("Span =", spans[i])),
    vp=viewports[[i]])
}

参考

约翰·W·图基,EDA艾迪生-卫斯理,1977 年。