gmdistribution.fit and gmdistribution help needed
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I tried to model a multivariate gaussian density with just a data set to estimate the mean, covariance and mixing parameter using gmdistribution.fit. But i dont know whether its correct. Here is my code:
function Ecc = Econtrol(O,K,m,T,n,q1,p2)
x = reshape(O(1:2*n),2,n);
U1 = reshape(O(2*n+1:q1),1,p2);
x=x';
obju = gmdistribution.fit(U1',K,'SharedCov',true,'CovType','diagonal');
objx = gmdistribution.fit(x,K,'SharedCov',true,'CovType','diagonal');
px=0;
for k=1:m
px = log(pdf(objx,x(k,:))+pdf(objx,x(k,:)))+px;
end
pu=0;
for k=1:T-m
pu = log(pdf(obju,U1(:,k))+pdf(obju,U1(:,k)))+pu;
end
Ecc = -px -pu;
end
below is the equation i wanna model. is it correct?
%
1 comentario
Daniel Shub
el 28 de Nov. de 2012
Closed as doit4me, please show your what you have tried and where you are stuck.
Respuesta aceptada
Tom Lane
el 28 de Nov. de 2012
I don't know if your code is correct, but:
1. The text seems not to declare that the covariance is diagonal, and does use notation to suggested that it may not be shared across mixture components.
2. Unless I'm just not seeing something, you seem to compute pdf(objx,x(k,:)) twice inside the log, and the same for U, but I don't know why you would want that.
3. Your text describes U as multivariate, but you seem to create U1 with just one row and index into it repeatedly, getting scalar values each time.
4. It may be possible to avoid the loops and compute the pdf on an entire array in one call, then sum the log of the result.
0 comentarios
Más respuestas (1)
Wei Cai Law
el 29 de Nov. de 2012
4 comentarios
Tom Lane
el 12 de Dic. de 2012
I don't understand. The variable g represents both components. pdf(g,x) compute the sum over both. Are you asking how to get at each one individually?
Ver también
Categorías
Más información sobre Cloud Integrations en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!