- Y = gsl_vector_alloc (n_data);
- X =
- design_matrix_create (n_indep,
- (const struct variable **) indep_vars,
- n_data);
- for (i = 0; i < X->m->size2; i++)
- {
- lopts.get_indep_mean_std[i] = 1;
- }
- models[k] = pspp_linreg_cache_alloc (dep_var, (const struct variable **) indep_vars,
- X->m->size1, X->m->size2);
- models[k]->depvar = dep_var;
- /*
- For large data sets, use QR decomposition.
- */
- if (n_data > sqrt (n_indep) && n_data > REG_LARGE_DATA)
- {
- models[k]->method = PSPP_LINREG_QR;
- }
-
- /*
- The second pass fills the design matrix.
- */
- reader = casereader_create_counter (reader, &row, -1);
- for (; (c = casereader_read (reader)) != NULL; case_unref (c))
- {
- for (i = 0; i < n_indep; ++i)
- {
- const struct variable *v = indep_vars[i];
- const union value *val = case_data (c, v);
- if (var_is_alpha (v))
- design_matrix_set_categorical (X, row, v, val);
- else
- design_matrix_set_numeric (X, row, v, val);
- }
- gsl_vector_set (Y, row, case_num (c, dep_var));
- }
- /*
- Now that we know the number of coefficients, allocate space
- and store pointers to the variables that correspond to the
- coefficients.
- */
- coeff_init (models[k], X);
-