aboutsummaryrefslogtreecommitdiff
path: root/src/logistic.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/logistic.cpp')
-rw-r--r--src/logistic.cpp46
1 files changed, 24 insertions, 22 deletions
diff --git a/src/logistic.cpp b/src/logistic.cpp
index 002ce98..3f9d6ff 100644
--- a/src/logistic.cpp
+++ b/src/logistic.cpp
@@ -13,7 +13,7 @@ typedef struct{
gsl_matrix_int *X;
gsl_vector_int *nlev;
gsl_vector *y;
- gsl_matrix *Xc; // continuous covariates matrix Nobs x Kc (NULL if not used)
+ gsl_matrix *Xc; // Continuous covariates matrix Nobs x Kc (NULL if not used).
double lambdaL1;
double lambdaL2;
} fix_parm_mixed_T;
@@ -29,8 +29,9 @@ double fLogit_mixed(gsl_vector *beta,
int npar = beta->size;
double total = 0;
double aux = 0;
+
// Changed loop start at 1 instead of 0 to avoid regularization of
- // beta_0*\/ */
+ // beta_0*\/
// #pragma omp parallel for reduction (+:total)
for(int i = 1; i < npar; ++i)
total += beta->data[i]*beta->data[i];
@@ -57,8 +58,9 @@ double fLogit_mixed(gsl_vector *beta,
}
-void logistic_mixed_pred(gsl_vector *beta // Vector of parameters length = 1 + Sum_k(C_k - 1)
- ,gsl_matrix_int *X //Matrix Nobs x K
+void logistic_mixed_pred(gsl_vector *beta // Vector of parameters
+ // length = 1 + Sum_k(C_k -1)
+ ,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 (NULL if not used)
,gsl_vector *yhat //Vector of prob. predicted by the logistic
@@ -287,39 +289,40 @@ int logistic_mixed_fit(gsl_vector *beta
/* Categorical */
/***************/
-// I need to bundle all the data that goes to the function to optimze together.
+// I need to bundle all the data that goes to the function to optimze
+// together.
typedef struct{
gsl_matrix_int *X;
gsl_vector_int *nlev;
gsl_vector *y;
double lambdaL1;
double lambdaL2;
-}fix_parm_cat_T;
-
-
-double fLogit_cat(gsl_vector *beta
- ,gsl_matrix_int *X
- ,gsl_vector_int *nlev
- ,gsl_vector *y
- ,double lambdaL1
- ,double lambdaL2)
-{
+} fix_parm_cat_T;
+
+double fLogit_cat(gsl_vector *beta,
+ gsl_matrix_int *X,
+ gsl_vector_int *nlev,
+ gsl_vector *y,
+ double lambdaL1,
+ double lambdaL2) {
int n = y->size;
- // int k = X->size2;
int npar = beta->size;
double total = 0;
double aux = 0;
- /* omp_set_num_threads(ompthr); */
- /* /\* Changed loop start at 1 instead of 0 to avoid regularization of beta 0*\/ */
- /* /\*#pragma omp parallel for reduction (+:total)*\/ */
+ // omp_set_num_threads(ompthr); /\* Changed loop start at 1 instead
+ // of 0 to avoid regularization of beta 0*\/ /\*#pragma omp parallel
+ // for reduction (+:total)*\/
for(int i = 1; i < npar; ++i)
total += beta->data[i]*beta->data[i];
total = (-total*lambdaL2/2);
- /* /\*#pragma omp parallel for reduction (+:aux)*\/ */
+
+ // /\*#pragma omp parallel for reduction (+:aux)*\/
for(int i = 1; i < npar; ++i)
aux += (beta->data[i]>0 ? beta->data[i] : -beta->data[i]);
total = total-aux*lambdaL1;
- /* #pragma omp parallel for schedule(static) shared(n,beta,X,nlev,y) reduction (+:total) */
+
+ // #pragma omp parallel for schedule(static) shared(n,beta,X,nlev,y)
+ // #reduction (+:total)
for(int i = 0; i < n; ++i) {
double Xbetai=beta->data[0];
int iParm=1;
@@ -333,7 +336,6 @@ double fLogit_cat(gsl_vector *beta
return -total;
}
-
void logistic_cat_pred(gsl_vector *beta // Vector of parameters length = 1 + Sum_k(C_k - 1)
,gsl_matrix_int *X //Matrix Nobs x K
,gsl_vector_int *nlev // Vector with number categories