【发布时间】:2021-07-19 02:26:58
【问题描述】:
我正在尝试估计 3 参数威布尔分布的参数(平移参数 beta= -0.5)。问题是我必须同时拟合两组数据。使用nlc(见下面的代码)我能够单独估计每组数据的分布参数,但不能同时估计。 GAMMA 类似于共享参数(估计的 GAMMA 在两个 nlc 估计中必须相同)。
我的数据如下所示:
x = seq(from =0, to =10, by =1)
y = c(0.1315, 0.2368, 0.2631, 0.1578, 0.1578, 0.0000, 0.0526, 0.0000, 0.0000, 0.0000, 0.0000)
z = c(0.3684, 0.3157, 0.2105, 0.0789, 0.0263, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
这是我的代码
# WEIBULL FUNCTION WITH ALPHA_GS and beta=-0.5
weibull_GS = function(x, GAMMA, ALPHA_GS){
(GAMMA/ALPHA_GS)*(((x-(-0.5))/ALPHA_GS)^(GAMMA-1))*exp(-((x-(-0.5))/ALPHA_GS)^GAMMA)
}
#ESTIMATE ALPHA_GS
nlc <- nls.control(maxiter=100)
n <- nls(y ~ weibull_GS(x, GAMMA, ALPHA_GS), control="nlc",
start = list(GAMMA=2, ALPHA_GS=3), trace=T, model=F)
summary(n)
# WEIBULL FUNCTION WITH ALPHA_GA beta=-0.5
weibull_GA = function(x, GAMMA, ALPHA_GA){
(GAMMA/ALPHA_GA)*(((x-(-0.5))/ALPHA_GA)^(GAMMA-1))*exp(-((x-(-0.5))/ALPHA_GA)^GAMMA)
}
# ESTIMATE ALPHA_GA
nlc <- nls.control(maxiter=100)
m <- nls(z ~ weibull_GA(x, GAMMA, ALPHA_GA), control="nlc",
start = list(GAMMA=2, ALPHA_GA=3), trace=T, model=F)
summary(m)
【问题讨论】:
-
nls(y ~ f(x))适合模型y = f(x) + error。我认为这不是你想要的。这里weibull_GA是威布尔分布的密度,不是吗? -
@StéphaneLaurent 是的,weibull_GS 和 weibull_GA 是 weibull 分布的密度函数,我想用共享参数 GAMMA 和 beta 拟合我的数据( --> 估计最适合通过最小二乘估计的参数)
-
我认为你的方法不对。
f(x) + error的分布是具有均值f(x)的正态分布。您应该使用最大似然法。
标签: r distribution nls model-fitting weibull