double WeightedMvnModel::pdf(Ptr<WeightedVectorData> dp, bool logscale)const{ double w = dp->weight(); const Vector &y(dp->value()); uint p = mu().size(); double wldsi = p*log(w) + ldsi(); return dmvn(y, mu(), w*siginv(), wldsi, logscale); }
double MVTR::pdf(dPtr dp, bool logscale)const{ Ptr<DataType> d = DAT(dp); const Vec &y(d->y()); const Vec &X(d->x()); double ans = dmvt(y, X*Beta(), Siginv(), nu(), ldsi(), true); return logscale ? ans : exp(ans); }
double ZMMM::loglike()const{ const double log2pi = 1.83787706641; double dim = mu_.size(); double n = suf()->n(); const Vec ybar = suf()->ybar(); const Spd sumsq = suf()->center_sumsq(); double qform = n*(siginv().Mdist(ybar)); qform+= traceAB(siginv(), sumsq); double nc = 0.5*n*( -dim*log2pi + ldsi()); double ans = nc - .5*qform; return ans; }
double MGSS::pdf(Ptr<Data> dp, bool logscale)const{ const Vec &y(DAT(dp)->value()); return dmvn(y, mu(), siginv(), ldsi(), logscale); }
double MVT::pdf(const Vector &x, bool logscale) const { return dmvt(x, mu(), siginv(), nu(), ldsi(), logscale); }
double MvReg::pdf(const Ptr<Data> &dptr, bool logscale) const { Ptr<MvRegData> dp = DAT(dptr); Vector mu = predict(dp->x()); return dmvn(dp->y(), mu, Siginv(), ldsi(), logscale); }
double ZMMM::pdf(Ptr<Data> dp, bool logscale)const{ Ptr<VectorData> dpp = DAT(dp); return dmvn_zero_mean(dpp->value(), siginv(), ldsi(), logscale); }