我需要对这个负偏斜的数据拟合一个Weibull模型:
55.6 51.2 57.3 62.3 50 59.2 54.2 60.3 53.7 52 61.4 62.3 57.8 60.9 44.5
具有此直方图:
我想在Matlab中使用wblfit拟合Weibull模型,在这种情况下我会得到
[parmhat,~] = wblfit(data,.95);
parmhat = 58.3775015628175 14.2433879423117
但是我相信这些参数是不正确的,因为Weibull pdf在Matlab中被定义为正偏。因此,为了反转数据,我对数据进行了简单的线性变换: modData = 100-data 然后我得到:
[parmhat,~] = wblfit(modData,.95);
parmhat = 46.1515222547038 8.62492481755511
要使问题更加复杂,请注意, parmhat 中的比例和形状值取决于转换!现在使用modData2 = 1000-数据:
[parmhat,~] = wblfit(modData2,.95);
parmhat = 946.463849591113 173.527538511119
对我来说不直观。我的问题是:如何使用modData和modData2中的变量转换在 parmhat 中“恢复”形状和比例参数的正确值?
更新:
在R中,我使用fitdistrplus,首先定义Gumbel
dgumbel <- function(x, a, b) 1/b*exp((a-x)/b)*exp(-exp((a-x)/b))
pgumbel <- function(q, a, b) exp(-exp((a-q)/b))
qgumbel <- function(p, a, b) a-b*log(-log(p))
然后拟合分布
fg <- fitdist(modData, "gumbel", start=list(a=10, b=10))
但是我不知道如何从modData中查找数据的参数。 谢谢!