LOESS置信区间线在R

时间:2019-01-10 02:11:59

标签: r

我需要你的帮助。我正在尝试以95%的置信区间绘制LOESS线。 LOESS贴合线看起来很平滑,但CI波段看起来参差不齐。如何使它们光滑?

output looks like this

我正在Windows下使用R GUI 3.5.2(x64)。

要复制的代码:

    x <- c(52.145, 64.7763333333333, 5.67666666666667, 9.20433333333333, 
    27.2216666666667, 24.582, 110.125333333333, 204.760666666667, 
    22.5476666666667, 36.8053333333333, 26.651, 21.918, 27.0943333333333, 
    40.3293333333333, 74.2676666666667, 47.4926666666667, 6.52833333333333, 
    8.256, 22.8563333333333, 78.8866666666667, 215.426666666667, 
    126.403, 153.092333333333, 145.178, 52.748, 52.625, 77.714, 90.718, 
    149.326666666667, 166.201666666667, 2.75966666666667, 4.48933333333333, 
    100.533666666667, 63.2303333333333, 177.810333333333, 262.929333333333, 
    1.89166666666667, 5.78433333333333, 8.079, 7.904, 219.011333333333, 
    285.053, 268.940666666667, 314.485333333333, 26.394, 32.5373333333333)

    y <- c(8.49946738825106, 7.29520245195293, 30.8997268609617, 15.5103125126096, 
    15.4272708801451, 5.20309902020628, 5.54009400197214, 4.78299334331501, 
    19.6108718604226, 15.0078723188159, 14.7205349306272, 22.8457479040348, 
    7.51298922530701, 30.523886336804, 16.6780115471446, 17.0293235066314, 
    21.4184087138986, 27.7684786021191, 16.2257718439185, 12.9437536112634, 
    7.1482850633121, 5.88468308537335, 14.903472797458, 6.78855737045925, 
    13.8022476754789, 9.27299793481615, 5.70560924863637, 5.09707444175834, 
    2.62057882780782, 4.67082818412207, 31.2134177720261, 62.7183002243229, 
    17.3998126739725, 7.27920875242628, 6.97326341930058, 3.644112408786, 
    83.0020817353163, 10.5840077295553, 36.8081152007687, 26.1648393978833, 
    2.72967129507292, 3.34330462563615, 7.24378060360362, 5.62587984381713, 
    18.2047389283449, 5.81239109000072)

    plot(x, y)

    j <- order(x) 

    plo <- predict(loess(y ~ x), se=TRUE)

    lines(x[j], plo$fit[j])
    lines(x[j], plo$fit[j] - qt(0.975,plo$df)*plo$se)
    lines(x[j], plo$fit[j] + qt(0.975,plo$df)*plo$se)

非常感谢!

1 个答案:

答案 0 :(得分:1)

对于标准错误,您还需要使用顺序j

lines(x[j], plo$fit[j])
lines(x[j], plo$fit[j] - qt(0.975,plo$df) * plo$se[j])
lines(x[j], plo$fit[j] + qt(0.975,plo$df) * plo$se[j])