LOESS回归置信区间的解释

Interpretation of confidence intervals of LOESS regression

我有一个如下所示的数据框:

days <- c(1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4,5,5,5,5,5,5,6,6,6,6,6,6,7,7,7,7,7,7)
values <- c(3,4,5,6,7,8,1,4,5,9,9,10,3,4,7,7,7,10,4,6,6,8,9,9,1,1,2,3,3,6,2,2,3,5,6,6,6,7,7,8,9,9)

df <- data.frame(days,values)

为了识别数据中的信号,我决定应用简单的 loess 平滑:

loess <- loess(df$values~df$days, span=1)
pred <- predict(loess, loess$x, se=TRUE)

plot(days,values)

lines(loess$x, loess$fitted, col="red", lwd=1.5)

lines(loess$x,pred$fit - qt(0.975,pred$df)*pred$se, lty="dashed", col="blue", lwd=1)
lines(loess$x,pred$fit + qt(0.975,pred$df)*pred$se, lty="dashed", col="blue", lwd=1)

结果(包括置信区间)如下所示:

我看到,例如,第 3 天的值比第 5 天的值更高,但这种差异是否显着?我应该比较每天的置信区间(在这种情况下重叠),还是应该根据黄土曲线与 CI 进行解释(例如,在第 3 天,曲线在第 5 天的置信区间之外)?

我认为这个问题可能更适合https://stats.stackexchange.com/

不过,为了回答您的问题,您想要比较 CI,就像比较两个不在时间序列中的估计值一样。

NB 重叠的 CI 并不一定意味着没有显着差异。

您误解了此处的置信区间。对于类型的回归问题:

observations = signal + noise

我们经常为估计信号生成逐点置信区间。此类约定包括线性模型、广义线性模型、非参数回归等

逐点置信区间易于计算,可帮助您评估每个点的估计值的可变性,但您无法进行交叉比较。在您的情况下,每天的逐点置信带都有重叠并不意味着它们之间没有统计差异。

如果真的要检验不同天的观测值之间是否有显着性差异,例如检验day3和day5是否有显着性差异,则应该做t检验:

day3 <- df$values[df$days == 3]
day5 <- df$values[df$days == 5]
## test whether two group have the same mean, i.e., mean difference = 0
t.test(day3, day5, mu = 0)$p.value
## 0.0177

现在,您可以看到第 5 天和第 3 天在 0.05 显着性水平上具有统计差异。

一般来说,你应该做 成对 t 检验:

pairwise.t.test(df$values, df$days, p.adjust.method = "none", pool.sd = FALSE)

#    Pairwise comparisons using t tests with non-pooled SD 

# data:  df$values and df$days 

#   1       2       3       4       5       6      
# 2 0.62614 -       -       -       -       -      
# 3 0.52954 1.00000 -       -       -       -      
# 4 0.20951 0.69979 0.62189 -       -       -      
# 5 0.02519 0.05772 0.01775 0.00307 -       -      
# 6 0.19799 0.19597 0.10104 0.02372 0.24736 -      
# 7 0.04247 0.41763 0.27750 0.50416 0.00044 0.00355

# P value adjustment method: none 

注意这里pairwist.t.test的用法:

  • 通过设置pool.sd = FALSE,没有估计所有组的共同标准误差;
  • 通过设置 p.adjust.method = "none",未调整 t.test 返回的原始 p 值。

通过这种方式,您可以看到 (5,3) 处的 p 值与我们在之前的 t 检验中看到的一致。

你的数据有绑定值,所以你有点幸运。对于实时序列,您每天都没有重复;在这种情况下,您无需进行成对 t 检验。