Fitting a Gamma distribution with threshold parameter: error message?

2 次查看(过去 30 天)
Hey,
I'm trying to fit a Gamma distribution to some raw data which includes a lower threshold parameter, and i'm getting the following error message. Could somebody help here please?
CODE %%%%%%%%%%%%%%%%%
c = min(data)/4
k = mean(data)^2
theta = var(data)/mean(data)^2
x = sort(data);
n = length(x);
pEmp = ((1:n)-0.5)' ./ n;
wgt = 1 ./ sqrt(pEmp.*(1-pEmp));
gammaObj = @(params) sum(wgt.*(gamcdf((x-params(1)),exp(params(2)),exp(params(3))) - pEmp).^2)
paramHat = fminsearch(gammaObj,[c,log(k),log(theta)])
paramHat1 = paramHat(1);
paramHat2 = exp(paramHat(2));
paramHat3 = exp(paramHat(3));
ERROR %%%%%%%%%%%%%%%%%
|??? Error using ==> minus Matrix dimensions must agree.
Error in ==> @(params)sum(wgt.*(gamcdf((x-params(1)),exp(params(2)),exp(params(3)))-pEmp).^2)
Error in ==> fminsearch at 205 fv(:,1) = funfcn(x,varargin{:});
Error in ==> gammaFit at 582 paramHat = fminsearch(gammaObj,[c,log(k),log(theta)])
| Thanks a bundle !

采纳的回答

Nirmal Gunaseelan
Nirmal Gunaseelan 2011-7-29
The error points to the MINUS operator. It appears that the variables x and n (and hence pEmp?) have the same dimensions and params(1) is different from this. What are the dimensions of these variables?
  3 个评论
Nirmal Gunaseelan
Nirmal Gunaseelan 2011-7-29
Good. So the difference now is between the dimensions of sim_data and the real_data that you are using. You could use this:
size(sim_data)
to verify.

请先登录,再进行评论。

更多回答(1 个)

haneen jawa
haneen jawa 2019-3-31
(R .* (C.^3)/2) .*(3/K) .*gamma(3/k); WHAT IS THE WRONG

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by