aboutsummaryrefslogtreecommitdiff
path: root/src/logistic.h
blob: 7f9e133a3c4539f0496b9a36300f79428334688b (plain)
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
#ifndef LOGISTIC_H_
#define LOGISTIC_H_

// Mixed interface.
void logistic_mixed_pred(gsl_vector *beta,     // Vector of parameters
					       // length = 1+Sum_k(C_k-1)+Kc.
			 gsl_matrix_int *X,    // Matrix Nobs x K.
			 gsl_vector_int *nlev, // Vector with num. categories.
			 gsl_matrix *Xc,       // Continuous covariates matrix
					       // Nobs x Kc
			 gsl_vector *yhat);    // Vector of prob. predicted by
					       // the logistic.
 
int logistic_mixed_fit(gsl_vector *beta,     // Vector of parameters
					     // length = 1+Sum_k(C_k-1)+Kc
		       gsl_matrix_int *X,    // Matrix Nobs x K.
		       gsl_vector_int *nlev, // Vector with number categories.
		       gsl_matrix *Xc,       // Continuous covariates
					     // matrix Nobs x Kc
		       gsl_vector *y,        // Vector of prob. to predict.
		       double lambdaL1,      // Reg. L1 0.0 if not used.
		       double lambdaL2);     // Reg. L2 0.0 if not used.

double fLogit_mixed(gsl_vector *beta,
		    gsl_matrix_int *X,
		    gsl_vector_int *nlev,
		    gsl_matrix *Xc, // continuous covariates matrix Nobs x Kc 
		    gsl_vector *y,
		    double lambdaL1,
		    double lambdaL2);

// Categorical-only interface.
void logistic_cat_pred(gsl_vector *beta,     // Vector of parameters
					     // length = 1+Sum_k(C_k-1)+Kc.
		       gsl_matrix_int *X,    // Matrix Nobs x K.
		       gsl_vector_int *nlev, // Vector with number categories.
		       gsl_vector *yhat);    // Vector of prob. predicted by 
					     // the logistic.
 
int logistic_cat_fit(gsl_vector *beta,     // Vector of parameters
					   // length = 1+Sum_k(C_k-1)+Kc.
		     gsl_matrix_int *X,    // Matrix Nobs x K .
		     gsl_vector_int *nlev, // Vector with number categories.
		     gsl_vector *y,        // Vector of prob. to predict.
		     double lambdaL1,      // Regularization L1, 0 if not used
		     double lambdaL2);     // Regularization L2, 0 if not used

double fLogit_cat(gsl_vector *beta,
		  gsl_matrix_int *X,
		  gsl_vector_int *nlev,
		  gsl_vector *y,
		  double lambdaL1,
		  double lambdaL2);

// Continuous-only interface.
void logistic_cont_pred(gsl_vector *beta, // Vector of parameters
					  // length = 1 + Sum_k(C_k-1) + Kc.
			gsl_matrix *Xc,   // Continuous cov's matrix Nobs x Kc.
			gsl_vector *yhat);// Vector of prob. predicted
					  // by the logistic.
 
int logistic_cont_fit(gsl_vector *beta, // Vector of parameters
					// length = 1+Sum_k(C_k-1)+Kc.
		      gsl_matrix *Xc,   // Continuous cov's matrix Nobs x Kc.
		      gsl_vector *y,    // Vector of prob. to predict.
		      double lambdaL1,  // Regularization L1, 0 if not used.
		      double lambdaL2); // Regularization L2, 0 if not used.

double fLogit_cont(gsl_vector *beta,
		   gsl_matrix *Xc, // Continuous covariates matrix Nobs x Kc.
		   gsl_vector *y,
		   double lambdaL1,
		   double lambdaL2);

#endif