Fixed crash in REGRESSION when only one SAVE parameter present.
authorJohn Darrington <john@darrington.wattle.id.au>
Mon, 23 Jun 2014 19:01:22 +0000 (21:01 +0200)
committerJohn Darrington <john@darrington.wattle.id.au>
Mon, 23 Jun 2014 19:06:04 +0000 (21:06 +0200)
The REGRESSION command crashed when /SAVE=resid or /SAVE=pred
(but not both) was given.  This change fixes this.

Reported by: Bob Earl <Bob.Earl@gmx.net>

src/language/stats/regression.c
tests/language/stats/regression.at

index cbffb7d45ecf909a473edf5caa1844dfa2368b81..52009e29683a72e4722df66674aead46fd1e2562 100644 (file)
@@ -335,6 +335,8 @@ cmd_regression (struct lexer *lexer, struct dataset *ds)
   workspace.pred_idx = -1;
   workspace.writer = NULL;                      
   workspace.reader = NULL;
+  workspace.residvars = NULL;
+  workspace.predvars = NULL;
   if (save)
     {
       int i;
index d194d73bfb99e69b2f7a811d89b064f227e4a3fe..7548160079b2e14d195c16dbe841dd55759fdcdf 100644 (file)
@@ -54,6 +54,78 @@ v0,v1,v2,RES1,PRED1
 AT_CLEANUP
 
 
+AT_SETUP([LINEAR REGRESSION - one save])
+AT_DATA([regression.sps], [dnl
+set format = F22.3.
+data list notable list / v0 to v2.
+begin data
+ 0.65377128  7.735648 -23.97588
+-0.13087553  6.142625 -19.63854
+ 0.34880368  7.651430 -25.26557
+ 0.69249021  6.125125 -16.57090
+-0.07368178  8.245789 -25.80001
+-0.34404919  6.031540 -17.56743
+ 0.75981559  9.832291 -28.35977
+-0.46958313  5.343832 -16.79548
+-0.06108490  8.838262 -29.25689
+ 0.56154863  6.200189 -18.58219
+end data
+regression /variables=v0 v1 v2 /statistics defaults /dependent=v2 /method=enter /save=resid.
+regression /variables=v0 v1 v2 /statistics defaults /dependent=v2 /method=enter /save=pred.
+list.
+])
+
+AT_CHECK([pspp -O format=csv regression.sps], [0], [dnl
+Table: Model Summary (v2)
+,R,R Square,Adjusted R Square,Std. Error of the Estimate
+,.971,.942,.925,1.337
+
+Table: ANOVA (v2)
+,,Sum of Squares,df,Mean Square,F,Sig.
+,Regression,202.753,2,101.376,56.754,.000
+,Residual,12.504,7,1.786,,
+,Total,215.256,9,,,
+
+Table: Coefficients (v2)
+,,Unstandardized Coefficients,,Standardized Coefficients,,
+,,B,Std. Error,Beta,t,Sig.
+,(Constant),2.191,2.357,.000,.930,.380
+,v0,1.813,1.053,.171,1.722,.129
+,v1,-3.427,.332,-1.026,-10.334,.000
+
+Table: Model Summary (v2)
+,R,R Square,Adjusted R Square,Std. Error of the Estimate
+,.971,.942,.925,1.337
+
+Table: ANOVA (v2)
+,,Sum of Squares,df,Mean Square,F,Sig.
+,Regression,202.753,2,101.376,56.754,.000
+,Residual,12.504,7,1.786,,
+,Total,215.256,9,,,
+
+Table: Coefficients (v2)
+,,Unstandardized Coefficients,,Standardized Coefficients,,
+,,B,Std. Error,Beta,t,Sig.
+,(Constant),2.191,2.357,.000,.930,.380
+,v0,1.813,1.053,.171,1.722,.129
+,v1,-3.427,.332,-1.026,-10.334,.000
+
+Table: Data List
+v0,v1,v2,RES1,PRED1
+.654,7.736,-23.976,-.84,-23.13
+-.131,6.143,-19.639,-.54,-19.10
+.349,7.651,-25.266,-1.87,-23.40
+.692,6.125,-16.571,.97,-17.54
+-.074,8.246,-25.800,.40,-26.20
+-.344,6.032,-17.567,1.53,-19.10
+.760,9.832,-28.360,1.77,-30.13
+-.470,5.344,-16.795,.18,-16.97
+-.061,8.838,-29.257,-1.05,-28.21
+.562,6.200,-18.582,-.54,-18.04
+])
+AT_CLEANUP
+
+
 # Test to ensure that the /SAVE subcommand works properly when SPLIT is active
 AT_SETUP([LINEAR REGRESSION - SAVE vs SPLITS])