Rcpp::NumericVector glmerResp::wrkResids() const { #ifdef USE_RCPP_SUGAR return (d_y - d_mu)/muEta(); #else NumericVector rr(d_y.size()), me = muEta(); std::transform(d_y.begin(), d_y.end(), d_mu.begin(), rr.begin(), std::minus<double>()); std::transform(rr.begin(), rr.end(), me.begin(), rr.begin(), std::divides<double>()); return rr; #endif }
double glmerResp::updateWts() { #ifdef USE_RCPP_SUGAR d_sqrtrwt = sqrt(d_weights/variance()); NumericVector tmp = muEta() * d_sqrtrwt; #else NumericVector vv = variance(); std::transform(d_weights.begin(), d_weights.end(), vv.begin(), d_sqrtrwt.begin(), std::divides<double>()); std::transform(d_sqrtrwt.begin(), d_sqrtrwt.end(), d_sqrtrwt.begin(), &::sqrt); NumericVector tmp = muEta(); std::transform(tmp.begin(), tmp.end(), d_sqrtrwt.begin(), tmp.begin(), std::multiplies<double>()); #endif std::copy(tmp.begin(), tmp.end(), d_sqrtXwt.begin()); return updateWrss(); }
Rcpp::NumericVector glmerResp::sqrtWrkWt() const { NumericVector me = muEta(); #ifdef USE_RCPP_SUGAR return sqrt(d_weights * me * me / variance()); #else NumericVector vv = variance(); std::transform(me.begin(), me.end(), me.begin(), me.begin(), std::multiplies<double>()); std::transform(me.begin(), me.end(), d_weights.begin(), me.begin(), std::multiplies<double>()); std::transform(me.begin(), me.end(), vv.begin(), me.begin(), std::divides<double>()); std::transform(me.begin(), me.end(), me.begin(), &::sqrt); return me; #endif }
Rcpp::NumericVector glmResp::sqrtWrkWt() const { Rcpp::NumericVector me = muEta(); return sqrt(d_weights * me * me / variance()); }
Rcpp::NumericVector glmResp::wrkResids() const { return (d_y - d_mu)/muEta(); }