lm.br - 如何捕获断点的置信区间?

lm.br - how do capture confidence interval on break point?

我正在使用 lm.br 来拟合 "LL"(线性-线性)模型。我想捕捉变化点的置信区间,但一直无法弄清楚如何去做。

使用文档示例,我们有:

creatinine <- c(37.3,47.1,51.5,67.6,75.9,73.3,69.4,61.5,31.8,19.4)

day <- 1:10

sc <- lm.br(creatinine ~ day)

sc

哪个产量,

致电: lm.br(公式=肌酐~天,类型="LL")

变化点和系数ci条目:

    theta         alpha   day < theta   day > theta 

  6.44115      82.52259       8.07143     -17.97000 

H0 的显着性水平:"no changepoint" 对比 H1:"one changepoint"

SL= 0.000163596  for theta0 = -0.5  by method CLR

CLR

的变化点 'theta' 的 95% 置信区间
[ 5.17344, 7.50078 ]

str(sc) 表明 ci 是 lm.br 的局部函数。其输出是:

sc $ ci()

CLR 的变更点 'theta' 的 95% 置信区间 [ 5.17344, 7.50078 ]

我试过这样的事情CI <- sc$ci(), as.numeric(sc$ci()), str(sc$ ci()) 似乎没有什么可以产生一个对象,我可以从中提取 CI 限制。我试过查看 lm.br 源代码,但它超出了我对 R 的(基本)理解。

必须有某种方法来提取这些值,以便它们可以用于其他计算;我很乐意ci学习如何做。谢谢。

来自文档...“'lm.br' returns 包含具有访问函数的 C++ 对象的列表”。因此,您必须将输出捕获为字符串...

library("lm.br")
library("stringr")
creatinine <- c(37.3,47.1,51.5,67.6,75.9,73.3,69.4,61.5,31.8,19.4)
day <- 1:10
sc <- lm.br(creatinine ~ day)
ci <- capture.output(sc$ci())
> str_extract_all(ci[2], "\b[0-9]*.[0-9]*\b")[[1]]
[1] "5.17344" "7.50078"