X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fcat.h;h=6912503537507f49f1c7b4aed9cbd630ae7ca717;hb=92fb12eb06716d14c05b781f5d9dcde956d77c30;hp=314c3cde47c4ab6fdb35d481326d4f81f6492097;hpb=61fc45c542d886b40b27e75803cf2c68a5849433;p=pspp diff --git a/src/cat.h b/src/cat.h index 314c3cde47..6912503537 100644 --- a/src/cat.h +++ b/src/cat.h @@ -1,4 +1,4 @@ -/* PSPP - linear regression. +/* PSPP - Binary encodings for categorical variables. Copyright (C) 2005 Free Software Foundation, Inc. Written by Jason H Stover . @@ -31,16 +31,14 @@ sub-row of a matrix, we need to know which sub-row corresponds to the variable 'cat_var'. - The data structures defined here will be placed in the variable - structure in the future. When that happens, the useful code - in this file will be that which refers to design matrices. */ #ifndef CAT_H -#define CAT_H 1 - -#include +#define CAT_H +#define CAT_VALUE_NOT_FOUND -2 #include +#include "val.h" +#include "var.h" /* This structure contains the observed values of a categorical variable. @@ -56,103 +54,4 @@ struct cat_vals */ }; -/* - There are usually multiple categorical variables to recode. Get rid - of this structure immediately when the variable structure has been - modified to contain the binary encoding. - */ -struct recoded_categorical_array -{ - struct recoded_categorical **a; - size_t n_vars; -}; -/* - The design matrix structure holds the design - matrix and an array to tell us which columns - correspond to which variables. This structure - is not restricted to categorical variables, and - perhaps should be moved to its own module. -*/ - -struct design_matrix_var -{ - int first_column; /* First column for this variable in - the design_matix. If this variable - is categorical, its values are - stored in multiple, contiguous - columns, as dictated by its vector - encoding in the variable's struct - recoded_categorical. - */ - int last_column; - const struct variable *v; -}; -struct design_matrix -{ - gsl_matrix *m; - struct design_matrix_var *vars; /* Element i corresponds to - the variable whose values - are stored in at least one - column of m. If that - variable is categorical - with more than two - categories, its values are - stored in multiple, - contiguous columns. The - variable's values are then - stored in the columns - first_column through - last_column of the - design_matrix_var - structure. - */ - size_t n_vars; -}; -union value *cat_vector_to_value (const gsl_vector *, struct variable *); - -void cat_stored_values_create (struct variable *); - -void cat_value_update (struct variable *, const union value *); - -int cat_free_recoded_array (struct recoded_categorical_array *); - -struct recoded_categorical_array *cr_recoded_cat_ar_create (int, - struct variable - *[]); - -void cat_recoded_categorical_create (struct variable *); - -void cat_create_value_matrix (struct variable *); - -struct recoded_categorical *cat_var_to_recoded_categorical (const struct - variable *, - struct - recoded_categorical_array - *); - -struct design_matrix *design_matrix_create (int, const struct variable *[], - const size_t); - -void design_matrix_destroy (struct design_matrix *); - -void design_matrix_set_categorical (struct design_matrix *, size_t, - const struct variable *, - const union value *); - -void design_matrix_set_numeric (struct design_matrix *, size_t, - const struct variable *, const union value *); - -size_t design_matrix_var_to_column (const struct design_matrix *, - const struct variable *); - -struct variable *design_matrix_col_to_var (const struct design_matrix *, - size_t); - -void -design_matrix_set (struct design_matrix *, size_t, - const struct variable *, const union value *, - struct recoded_categorical *); - -void cat_stored_values_destroy (struct variable *); - #endif