【问题标题】:Interpretation of confidence intervals of LOESS regressionLOESS回归置信区间的解释
【发布时间】:2023-07-13 09:08:01
【问题描述】:

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

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 天的置信区间之外)?

【问题讨论】:

    标签: r time-series confidence-interval loess


    【解决方案1】:

    您在这里误解了置信区间。对于类型的回归问题:

    observations = signal + noise
    

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

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

    如果你真的想测试不同天的观测值是否存在显着差异,例如测试第3天和第5天是否有显着差异,你应该做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 显着性水平上有统计学差异。

    一般来说,你应该做pairwise t-test

    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 检验。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】: