【问题标题】:using R segmented package with lognormal errors使用带有对数正态错误的 R 分段包
【发布时间】:2018-02-06 16:38:49
【问题描述】:

我的模型是:

y = f(x) exp(E)  where E~N(0,sig^2)

其中 f(x) = 分段线性模型 (ax + bI(x-d)(x-d)) (a和b是参数,d=断点,I=指标函数)

s.t

log (y) = log(f(x)) + E

我已经编码了:

lin.mod <- lm(y~x  - 1,data=data)
startingVals <- 10000
seg.mod <- segmented(lin.mod, intercp=F, seg.Z = ~x, psi=startingVals)

一切运行良好,但这符合假设高斯误差 (y = f(x) + E) 而非对数正态误差的模型。

如何指定要传递给分段的适当线性模型?

现在我自己编写了这个问题,循环遍历断点向量并优化给定断点的对数似然,但这需要一段时间(我有一个很好的网格)。

我希望能够使用分段来加快速度,但目前尚不清楚我将如何做到这一点。 谢谢

【问题讨论】:

  • 答案是:不能,它没有设置为适合这种错误结构。

标签: r regression piecewise


【解决方案1】:

Firth (1988, JRSSB p. 266-268) 讨论了对数正态分布和 Gamma 分布之间的相似性。因此,第一种(近似)方法可能是使用具有 Gamma 族和身份链接的 GLM。分段适用于 GLM。

library(segmented)
o<-glm(y~x, family=Gamma(link="identity"))
os<-segmented(o, ~x) #for 1 breakpoint the starting value for psi could be omitted

当拟合“o”时,它可以帮助提供起始值。例如,

beta0<-coef(lm(log(y)~x))
glm(y~x, family=Gamma(link="identity"), start=beta0)

【讨论】:

    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 2018-04-18
    相关资源
    最近更新 更多