Fitting a Gamma distribution with threshold parameter: error message?

조회 수: 5 (최근 30일)
Paul
Paul 2011년 7월 29일
답변: haneen jawa 2019년 3월 31일
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.
Paul
Paul 2011년 7월 29일
very simple:
real_data was not properly vectorized !
Thanks a lot.

댓글을 달려면 로그인하십시오.

추가 답변 (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