楼主: liumin1988
3147 11

[问答] GMM估计 [推广有奖]

  • 0关注
  • 0粉丝

大专生

16%

还不是VIP/贵宾

-

威望
0
论坛币
252 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
109 点
帖子
20
精华
0
在线时间
54 小时
注册时间
2011-12-20
最后登录
2019-1-1

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
如何用matlab实现GMM估计?急需
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:GMM估计 GMM matlab实现 MATLAB atlab matlab 如何

沙发
shmilxxj 发表于 2011-12-22 22:53:42 |只看作者 |坛友微信交流群
怎么不用stata试试呢?
每天学习一点点!

使用道具

藤椅
liumin1988 发表于 2011-12-23 11:20:11 |只看作者 |坛友微信交流群
stata也不太会啊,而且我看到的文献是用matlab做的,所以想试试。

使用道具

板凳
zhouzhiapple 发表于 2011-12-25 16:59:18 |只看作者 |坛友微信交流群
楼主GMM弄好了不?我现在要要弄,想想你请教下

使用道具

报纸
liumin1988 发表于 2012-1-2 14:00:32 |只看作者 |坛友微信交流群
还没有,还在问啊,都没人回。

使用道具

地板
matlab-007 发表于 2014-11-24 17:35:45 |只看作者 |坛友微信交流群

1. GMM library for Matlab 内含Doc & Source code .
2. hyptest_d, gmmldv_d, lingmm_d , 三者要配合安装 “Econometrics Toolbox for Matlab”.
我这里网不好 你留个邮箱我把GMM Libraries for Matlab软件传给你

使用道具

7
lixinxian 发表于 2015-10-5 14:09:13 |只看作者 |坛友微信交流群
我需要,请发给我一份,lixinxian2005@126.com

使用道具

8
hyh1558171236 发表于 2016-5-23 08:51:19 来自手机 |只看作者 |坛友微信交流群
liumin1988 发表于 2011-12-22 22:36
如何用matlab实现GMM估计?急需
r怎么做gmm估计,哪个包

使用道具

9
matlab-007 发表于 2016-7-17 19:31:40 |只看作者 |坛友微信交流群
function varargout = gmm(X, K_or_centroids)
% ============================================================
% Expectation-Maximization iteration implementation of
% Gaussian Mixture Model.
%
% PX = GMM(X, K_OR_CENTROIDS)
% [PX MODEL] = GMM(X, K_OR_CENTROIDS)
%
%  - X: N-by-D data matrix.
%  - K_OR_CENTROIDS: either K indicating the number of
%       components or a K-by-D matrix indicating the
%       choosing of the initial K centroids.
%
%  - PX: N-by-K matrix indicating the probability of each
%       component generating each point.
%  - MODEL: a structure containing the parameters for a GMM:
%       MODEL.Miu: a K-by-D matrix.
%       MODEL.Sigma: a D-by-D-by-K matrix.
%       MODEL.Pi: a 1-by-K vector.
% ============================================================

    threshold = 1e-15;
    [N, D] = size(X);

    if isscalar(K_or_centroids)
        K = K_or_centroids;
        % randomly pick centroids
        rndp = randperm(N);
        centroids = X(rndp(1:K), :);
    else
        K = size(K_or_centroids, 1);
        centroids = K_or_centroids;
    end

    % initial values
    [pMiu pPi pSigma] = init_params();

    Lprev = -inf;
    while true
        Px = calc_prob();

        % new value for pGamma
        pGamma = Px .* repmat(pPi, N, 1);
        pGamma = pGamma ./ repmat(sum(pGamma, 2), 1, K);

        % new value for parameters of each Component
        Nk = sum(pGamma, 1);
        pMiu = diag(1./Nk) * pGamma' * X;
        pPi = Nk/N;
        for kk = 1:K
            Xshift = X-repmat(pMiu(kk, :), N, 1);
            pSigma(:, :, kk) = (Xshift' * ...
                (diag(pGamma(:, kk)) * Xshift)) / Nk(kk);
        end

        % check for convergence
        L = sum(log(Px*pPi'));
        if L-Lprev < threshold
            break;
        end
        Lprev = L;
    end

    if nargout == 1
        varargout = {Px};
    else
        model = [];
        model.Miu = pMiu;
        model.Sigma = pSigma;
        model.Pi = pPi;
        varargout = {Px, model};
    end

    function [pMiu pPi pSigma] = init_params()
        pMiu = centroids;
        pPi = zeros(1, K);
        pSigma = zeros(D, D, K);

        % hard assign x to each centroids
        distmat = repmat(sum(X.*X, 2), 1, K) + ...
            repmat(sum(pMiu.*pMiu, 2)', N, 1) - ...
            2*X*pMiu';
        [dummy labels] = min(distmat, [], 2);

        for k=1:K
            Xk = X(labels == k, :);
            pPi(k) = size(Xk, 1)/N;
            pSigma(:, :, k) = cov(Xk);
        end
    end

    function Px = calc_prob()
        Px = zeros(N, K);
        for k = 1:K
            Xshift = X-repmat(pMiu(k, :), N, 1);
            inv_pSigma = inv(pSigma(:, :, k));
            tmp = sum((Xshift*inv_pSigma) .* Xshift, 2);
            coef = (2*pi)^(-D/2) * sqrt(det(inv_pSigma));
            Px(:, k) = coef * exp(-0.5*tmp);
        end
    end
end

使用道具

10
败给了时间 发表于 2016-7-18 22:34:44 |只看作者 |坛友微信交流群
matlab-007 发表于 2014-11-24 17:35
1. GMM library for Matlab 内含Doc & Source code .
2. hyptest_d, gmmldv_d, lingmm_d , 三者要配合安 ...
lxyshiyup@163.com,谢谢!

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-6-7 21:39