aboutsummaryrefslogtreecommitdiff
path: root/src/logistic.h
blob: e9519355814591ccebd0ccd42c1a6114cda7ef59 (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
#ifndef LOGISTIC_H_   /* Include guard */
#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.0 if not used
		     double lambdaL2); // Regularization L2 0.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 covariates  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 covariates  Matrix Nobs x Kc 
		      ,gsl_vector *y //Vector of prob. to predict
		      ,double lambdaL1 // Regularization L1 0.0 if not used
		      ,double lambdaL2); // Regularization L2 0.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 // LOGISTIC_H_