如何引导 loes 函数并估计 R 中的置信区间

问题描述 投票:0回答:0

我一直在兜圈子,试图为我的数据引导置信区间。我对统计数据只有非常基本的了解,并且在调整代码时遇到了麻烦,例如here.

我的目标是能够预测数据的 x 范围(即从 27.05575 到 144.75700,但如果需要引导程序可以截断数据)的平均值、置信区间和 sd(比如 300)过程)。

生成黄土的示例代码。

# create a data frame
df <- data.frame(
  DBH = c(27.05575, 30.10165, 41.36365, 48.31459, 64.64380, 64.88845, 65.55535, 75.12160, 79.40695, 113.27850, 114.68800, 120.68150, 125.24300, 130.27200, 132.17600, 144.75700),
  length = c(0.0000000, 0.0000000, 0.0000000, 0.0000000, 1.5056656, 0.4686661, 1.5143648, 1.2282208, 0.3701741, 19.2412440, 51.3086010, 33.4588765, 254.6009090, 35.0538617, 59.5713370, 195.1270735),
  normalised = c(0.000000000, 0.000000000, 0.000000000, 0.000000000, 0.005913827, 0.001840787, 0.005947995, 0.004824102, 0.001453939, 0.075574137, 0.201525600, 0.131416956, 1.000000000, 0.137681605, 0.233979278, 0.76640368)
)

model <- loess(normalised ~ DBH, data= df, span = .8)
xrange <- range(subData$DBH)
xseq <- seq(from=xrange[1], to=xrange[2], length=300)
pred <- predict(model, newdata = data.frame(DBH = xseq), se=TRUE)
yfit = pred$fit

predictionDataFrame <- data.frame(xseq, yfit) %>%
  rename(DBH = xseq, normalised = yfit)

ggplot(data = predictionDataFrame, aes(x = DBH, y = normalised)) +
  geom_line(size = 2) +
  geom_point(data = df, aes(x = DBH, y = normalised)) +
  theme_bw()

旁注——我更喜欢不太平滑的曲线,但由于我的数据中存在一些差距,当我使用较低的平滑参数时,我遇到了一些奇怪的事情。即这是 0.6 的曲线:

除了'span'参数,还有其他方法可以控制黄土吗?更改其他参数似乎并没有太大作用。但是,使用

loess.boot
包中的
spatialEco
函数,拟合曲线似乎比具有 0.8 平滑度的原始
loess
函数更有针对性。最后一张图片是使用
loess.boot
(粗线)和
spatialEco
函数(虚线)的
loess
函数对我的几个不同测量值的比较。我不想依赖那个包,而是手动完成这个过程,这样我就明白发生了什么。

预测。

r regression bootstrapping loess
© www.soinside.com 2019 - 2024. All rights reserved.