From: Jason H Stover Date: Mon, 23 Feb 2009 16:23:30 +0000 (-0500) Subject: linreg.c: (pspp_linreg_mse) New accessor function X-Git-Tag: v0.7.3~285^2~2 X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pspp-builds.git;a=commitdiff_plain;h=4aa2ac7ebf21370681326bb03182dac973f23a29 linreg.c: (pspp_linreg_mse) New accessor function regression.q: (reg_stats_r) Report root MSE instead of std. error of R-squared. Fixes bug 25677. --- diff --git a/src/language/stats/regression.q b/src/language/stats/regression.q index d82d5549..9b485d7b 100644 --- a/src/language/stats/regression.q +++ b/src/language/stats/regression.q @@ -148,7 +148,7 @@ reg_stats_r (pspp_linreg_cache * c) assert (c != NULL); rsq = c->ssm / c->sst; adjrsq = 1.0 - (1.0 - rsq) * (c->n_obs - 1.0) / (c->n_obs - c->n_indeps); - std_error = sqrt ((c->n_indeps - 1.0) / (c->n_obs - 1.0)); + std_error = sqrt (pspp_linreg_mse (c)); t = tab_create (n_cols, n_rows, 0); tab_dim (t, tab_natural_dimensions); tab_box (t, TAL_2, TAL_2, -1, TAL_1, 0, 0, n_cols - 1, n_rows - 1); @@ -281,7 +281,7 @@ reg_stats_anova (pspp_linreg_cache * c) int n_cols = 7; int n_rows = 4; const double msm = c->ssm / c->dfm; - const double mse = c->sse / c->dfe; + const double mse = pspp_linreg_mse (c); const double F = msm / mse; const double pval = gsl_cdf_fdist_Q (F, c->dfm, c->dfe); @@ -689,21 +689,17 @@ subcommand_save (struct dataset *ds, int save, pspp_linreg_cache ** models) for (lc = models; lc < models + cmd.n_dependent; lc++) { - if (*lc != NULL) + assert (*lc != NULL); + assert ((*lc)->depvar != NULL); + if (cmd.a_save[REGRESSION_SV_RESID]) { - if ((*lc)->depvar != NULL) - { - if (cmd.a_save[REGRESSION_SV_RESID]) - { - reg_save_var (ds, "RES", regression_trns_resid_proc, *lc, - &(*lc)->resid, n_trns); - } - if (cmd.a_save[REGRESSION_SV_PRED]) - { - reg_save_var (ds, "PRED", regression_trns_pred_proc, *lc, - &(*lc)->pred, n_trns); - } - } + reg_save_var (ds, "RES", regression_trns_resid_proc, *lc, + &(*lc)->resid, n_trns); + } + if (cmd.a_save[REGRESSION_SV_PRED]) + { + reg_save_var (ds, "PRED", regression_trns_pred_proc, *lc, + &(*lc)->pred, n_trns); } } } diff --git a/src/math/linreg.c b/src/math/linreg.c index a50aa7d8..f5ae33e5 100644 --- a/src/math/linreg.c +++ b/src/math/linreg.c @@ -737,3 +737,9 @@ pspp_linreg_with_cov (const struct covariance_matrix *full_cov, design_matrix_destroy (cov); } +double pspp_linreg_mse (const pspp_linreg_cache *c) +{ + assert (c != NULL); + return (c->sse / c->dfe); +} + diff --git a/src/math/linreg.h b/src/math/linreg.h index 53f47a61..f9d8c9b3 100644 --- a/src/math/linreg.h +++ b/src/math/linreg.h @@ -222,4 +222,5 @@ void pspp_linreg_set_indep_variable_mean (pspp_linreg_cache *, const struct vari Regression using only the covariance matrix. */ void pspp_linreg_with_cov (const struct covariance_matrix *, pspp_linreg_cache *); +double pspp_linreg_mse (const pspp_linreg_cache *); #endif diff --git a/tests/command/regression-qr.sh b/tests/command/regression-qr.sh index b90402d7..5f4936d8 100755 --- a/tests/command/regression-qr.sh +++ b/tests/command/regression-qr.sh @@ -1582,7 +1582,7 @@ diff -b $TEMPDIR/pspp.list - << EOF #============#========#=================#==========================# # R #R Square|Adjusted R Square|Std. Error of the Estimate# #========#===#========#=================#==========================# -# |.05# .00| .00| .00# +# |.05# .00| .00| 8.11# #========#===#========#=================#==========================# 2.2 REGRESSION. ANOVA #===================#==============#====#===========#=====#============# diff --git a/tests/command/regression.sh b/tests/command/regression.sh index db33445e..a8e1942e 100755 --- a/tests/command/regression.sh +++ b/tests/command/regression.sh @@ -95,7 +95,7 @@ diff -b $TEMPDIR/pspp.list - << EOF #============#========#=================#==========================# # R #R Square|Adjusted R Square|Std. Error of the Estimate# #========#===#========#=================#==========================# -# |.97# .94| .93| .33# +# |.97# .94| .93| 1.34# #========#===#========#=================#==========================# 2.2 REGRESSION. ANOVA #===================#==============#==#===========#======#============#