double MVT::complete_data_loglike() const { Vector params = vectorize_params(); params.pop_back(); double ans = mvn->loglike(params); Vector nu_vector(1, nu()); ans += wgt->loglike(nu_vector); return ans; }
void MVT::mle() { const double eps = 1e-5; double dloglike = eps + 1; double loglike = this->loglike(vectorize_params()); double old = loglike; Vector Nu(1, nu()); while (dloglike > eps) { Estep(); mvn->mle(); MvtNuTF f(this); loglike = max_nd1(Nu, Target(f), dTarget(f)); set_nu(Nu[0]); dloglike = loglike - old; old = loglike; } }
void WishartModel::mle1(){ Vector theta = vectorize_params(); dLoglikeTF target(this); max_nd1(theta, Target(target), dTarget(target)); unvectorize_params(theta); }