glm.hpp
Go to the documentation of this file.
1 
10 #pragma once
11 
12 #ifndef ARMA_R
13 #define MATHLIB_STANDALONE
14 #include <armadillo>
15 #endif
16 #if defined(ARMA_R)
17 #include <RcppArmadillo.h>
18 #endif
19 #include <cmath>
20 #include <complex>
21 #include <cfloat> // precision of double (DBL_MIN)
22 #include <functional> // std::bind for using non-static member function as argument to free function
23 #include <vector>
24 
25 using cx_dbl = std::complex<double>;
26 using cx_func = std::function<arma::cx_mat(arma::cx_vec theta)>;
27 using matlist = std::vector<arma::mat>;
28 
29 namespace target {
30 
31  arma::mat expit(arma::mat x);
32  arma::cx_mat expit(arma::cx_mat x);
33  arma::vec softmax(arma::vec u);
34  arma::mat softmax(arma::mat lp, bool ref, bool log);
35 
36  // template<typename T>
37  // arma::Mat<T> expit(const arma::Mat<T> &x) {
38  // return 1.0/(1+exp(-x));
39  // }
40  arma::mat expit(arma::mat x);
41  arma::cx_mat expit(arma::cx_mat x);
42 
43  class IID {
44  public:
45  arma::mat iid;
46  arma::mat vcov;
47  IID(): iid(arma::zeros(1, 1)), vcov(arma::zeros(1, 1)) {}
48  IID(arma::mat score, arma::mat v): iid(score*v), vcov(v) {}
49  };
50 
51  IID logistic_iid(const arma::vec &y,
52  const arma::vec &p,
53  const arma::mat &x,
54  const arma::vec &w);
55 
56  IID linear_iid(const arma::vec &y,
57  const arma::vec &p,
58  const arma::mat &x,
59  const arma::vec &w);
60 
61 } // namespace target