-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstreams.cpp
85 lines (63 loc) · 2.71 KB
/
streams.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <TMB.hpp>
template<class Type>
Type objective_function<Type>::operator() ()
{
/* Minimal example */
DATA_VECTOR(density);
DATA_IVECTOR(stream);
int n = density.size();
PARAMETER(mu);
PARAMETER(logSigma);
PARAMETER(logSigmaS);
PARAMETER_VECTOR(u);
Type nll = 0.0;
//contribution to the random effects
//for (int i = 0; i<6; i++)
nll -= sum(dnorm(u,0.0,exp(logSigmaS),true));
vector<Type> pred(n);
for (int i=0;i<n;i++)
pred(i) = mu + u(stream(i)-1);
//
nll -= sum(dnorm(density, pred, exp(logSigma), true));
return nll;
/* Quick Reference
===============
** Macros to read data and declare parameters:
_Template_Syntax_ _C++_type_ _R_type_
DATA_VECTOR(name) vector<Type> vector
DATA_MATRIX(name) matrix<Type> matrix
DATA_SCALAR(name) Type numeric(1)
DATA_INTEGER(name) int integer(1)
DATA_FACTOR(name) vector<int> factor
DATA_SPARSE_MATRIX(name) Eigen::SparseMatrix<Type> dgTMatrix
DATA_ARRAY(name) array<Type> array
PARAMETER_MATRIX(name) matrix<Type> matrix
PARAMETER_VECTOR(name) vector<Type> vector
PARAMETER_ARRAY(name) array<Type> array
PARAMETER(name) Type numeric(1)
** Macro to report intermediate expressions back to R:
REPORT(x)
ADREPORT(x)
** Basic constructors:
vector<Type> v(n1);
matrix<Type> m(n1,n2);
array<Type> a(n1,n2,n3)
** Basic operations:
v+v,v-v,v*v,v/v Pointwise binary operations
m*v Matrix-vector multiply
a.col(i) R equivalent of a[,,i]
a.col(i).col(j) R equivalent of a[,j,i]
a(i,j,k) R equivalent of a[i,j,k]
exp(v) Pointwise math
m(i,j) R equivalent of m[i,j]
v.sum() R equivalent of sum(v)
m.transpose() R equivalent of t(m)
** Distributions:
Type dnbinom2(const Type &x, const Type &mu, const Type &var, int give_log=0)
Type dpois(const Type &x, const Type &lambda, int give_log=0)
Type dlgamma(Type y, Type shape, Type scale, int give_log=0)
Type dnorm(Type x, Type mean, Type sd, int give_log=0)
** Parallel accumulator declaration (only methods "+=" and "-="):
parallel_accumulator<Type> res(this);
*/
}