微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R 中的 Weibull 参数估计,同时考虑 X时间和 Y累积观察

如何解决R 中的 Weibull 参数估计,同时考虑 X时间和 Y累积观察

早上好,

我正在尝试从以下数据集中计算 R 中的尺度和形状 Weibull 参数

enter image description here

然而,X 数据是随时间不均匀抽取的样本,即它们分布不均。

  • X - 以天为单位的时间,可能在 0 到 14 之间变化
  • Y - 累积发布,从 0 到 100% 不等

我想请您支持从这个数据集中计算威布尔参数,因为从我能够研究的内容来看,诸如 fitdist(dat,"weibull") 之类的函数似乎并不像 dat 那样合适一个数字向量,我似乎无法包括时间 (X) 对累积释放的影响。

X <- c(0.04,0.7,1,3,6,9)
Y <- c(12,46,48,67,87,93)

亲切的问候, 保罗

解决方法

模型可以拟合nls。但 y 值必须在区间 [0,1] 内。

df1 <- data.frame(x = X,y = Y/100)

fit <- nls(
  y ~ pweibull(x,shape = shape,scale = scale),data = df1,start = list(shape = 0.1,scale = 0.1)
)
fit
#Nonlinear regression model
#  model: y ~ pweibull(x,scale = scale)
#   data: df1
#shape scale 
#0.556 1.956 
# residual sum-of-squares: 0.004963
#
#Number of iterations to convergence: 6 
#Achieved convergence tolerance: 6.215e-07

现在绘制基于此模型的图形。模型似乎拟合了数据。

xnew <- seq(min(X),max(X),length.out = 100)
ynew <- predict(fit,newdata = data.frame(x = xnew))
newd <- data.frame(x = xnew,y = ynew)

plot(y ~ x,df1)
lines(y ~ x,newd,col = "red",lty = "dotted")

enter image description here

数据

X <- c(0.04,0.7,1,3,6,9)
Y <- c(12,46,48,67,87,93)
,

您可以使用损失函数解决这个问题,并注意到 Weibull 分布的 CDF 由 F(x) = 1 - exp(-(x/lambda)^k) 给出。

library(tidyverse)

loss <- function(params) {
  x <- c(0.04,9)
  y <- c(12,93)/100
  print(paste0("lambda: ",params[1],"; k: ",params[2]))
  fitted <- 1 - exp(-(x/params[1])**params[2])
  loss <- sum((fitted - y)*(fitted - y))
  return(loss)
}

nlm(loss,c(1,1))

tibble(
  x=rep(c(0.04,9)),y=c(12,93)/100,fitted=1 - exp(-(c(0.04,9)/1.95595756931587)**0.556026917419405)
) %>% 
  ggplot() +
  geom_point(aes(x=x,y=y)) +
  geom_line(aes(x=x,y=fitted))

给予

[1] "lambda: 1; k: 1"
[1] "lambda: 1; k: 1"
[1] "lambda: 1.000001; k: 1"
[1] "lambda: 1; k: 1.000001"
[1] "lambda: 1.22355098897031; k: 0.891679447194814"
[1] "lambda: 1.2235522125213; k: 0.891679447194814"
<lines deleted>
[1] "lambda: 1.95595952527344; k: 0.556025917419405"
[1] "lambda: 1.95595756931587; k: 0.556026917419405"

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。