int this_row;
double t_stat;
double pval;
- double coeff;
double std_err;
double beta;
const char *label;
tab_float (t, 2, 1, 0, c->intercept, 10, 2);
std_err = sqrt (gsl_matrix_get (c->cov, 0, 0));
tab_float (t, 3, 1, 0, std_err, 10, 2);
- beta = c->intercept / c->depvar_std;
- tab_float (t, 4, 1, 0, beta, 10, 2);
+ tab_float (t, 4, 1, 0, 0.0, 10, 2);
t_stat = c->intercept / std_err;
tab_float (t, 5, 1, 0, t_stat, 10, 2);
pval = 2 * gsl_cdf_tdist_Q (fabs (t_stat), 1.0);
/*
Regression coefficients.
*/
- coeff = c->coeff[j]->estimate;
- tab_float (t, 2, this_row, 0, coeff, 10, 2);
+ tab_float (t, 2, this_row, 0, c->coeff[j]->estimate, 10, 2);
/*
Standard error of the coefficients.
*/
Standardized coefficient, i.e., regression coefficient
if all variables had unit variance.
*/
- beta = gsl_vector_get (c->indep_std, j + 1);
- beta *= coeff / c->depvar_std;
+ beta = pspp_coeff_get_sd (c->coeff[j]);
+ beta *= c->coeff[j]->estimate / c->depvar_std;
tab_float (t, 4, this_row, 0, beta, 10, 2);
/*
Test statistic for H0: coefficient is 0.
*/
- t_stat = coeff / std_err;
+ t_stat = c->coeff[j]->estimate / std_err;
tab_float (t, 5, this_row, 0, t_stat, 10, 2);
/*
P values for the test statistic above.
pspp_coeff_init (c->coeff, dm);
}
-/*
- Put the moments in the linreg cache.
- */
-static void
-compute_moments (pspp_linreg_cache * c, struct moments_var *mom,
- struct design_matrix *dm, size_t n)
-{
- size_t i;
- size_t j;
- double weight;
- double mean;
- double variance;
- double skewness;
- double kurtosis;
- /*
- Scan the variable names in the columns of the design matrix.
- When we find the variable we need, insert its mean in the cache.
- */
- for (i = 0; i < dm->m->size2; i++)
- {
- for (j = 0; j < n; j++)
- {
- if (design_matrix_col_to_var (dm, i) == (mom + j)->v)
- {
- moments1_calculate ((mom + j)->m, &weight, &mean, &variance,
- &skewness, &kurtosis);
- gsl_vector_set (c->indep_means, i, mean);
- gsl_vector_set (c->indep_std, i, sqrt (variance));
- }
- }
- }
-}
-
static bool
run_regression (struct casereader *input, struct cmd_regression *cmd,
struct dataset *ds, pspp_linreg_cache **models)
n_indep = identify_indep_vars (indep_vars, dep_var);
reader = casereader_clone (input);
reader = casereader_create_filter_missing (reader, indep_vars, n_indep,
- MV_ANY, NULL);
+ MV_ANY, NULL, NULL);
reader = casereader_create_filter_missing (reader, &dep_var, 1,
- MV_ANY, NULL);
+ MV_ANY, NULL, NULL);
n_data = prepare_categories (casereader_clone (reader),
indep_vars, n_indep, mom);
{
lopts.get_indep_mean_std[i] = 1;
}
- models[k] = pspp_linreg_cache_alloc (X->m->size1, X->m->size2);
+ 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.
/*
Find the least-squares estimates and other statistics.
*/
- pspp_linreg ((const gsl_vector *) Y, X->m, &lopts, models[k]);
- compute_moments (models[k], mom, X, n_variables);
+ pspp_linreg ((const gsl_vector *) Y, X, &lopts, models[k]);
if (!taint_has_tainted_successor (casereader_get_taint (input)))
{