Using Splines to Incorporate Nonlinear Effects

/*--------------------------------------------------------------

                    SAS Sample Library

        Name: ucmex06.sas
 Description: Example program from SAS/ETS User's Guide,
              The UCM Procedure
       Title: Using Splines to Incorporate Nonlinear Effects
     Product: SAS/ETS Software
        Keys: equally spaced univariate time series data
        PROC: UCM
       Notes:

--------------------------------------------------------------*/

ods graphics on;

data utility;
   input temp load @@;
   label temp= "Average Daily Temperature"
      load= "Average Daily Electricity Demand";
   date = intnx('day', '01JAN1999'd, _n_ - 1 );
   format date date7.;
datalines;
   28  52  29  51  28  53  26  59  27   56   26   58
   25  58  25  56  24  55  24  53  25   57   25   57
   24  58  26  55  27  50  28  44  29   43   29   50
   28  50  27  51  26  52  28  48  29   46   29   46
   28  53  28  51  28  48  28  48  28   47   29   45
   29  43  29  48  29  48  30  49  28   53   28   48
   27  46  28  43  30  46  31  45  31   46   31   51
   28  51  26  45  28  39  30  46  29   49   28   50
   28  49  28  48  28  43  27  43  28   47   29   47
   29  46  30  45  31  43  31  41  31   40   31   44
   31  44  31  46  31  47  31  46  30   42   30   42
   30  47  30  45  31  44  30  45  30   44   31   40
   31  39  31  41  31  41  31  43  31   43   32   41
   32  38  32  36  32  42  32  43  32   43   32   42
   32  41  32  39  33  37  33  41  34   40   37   40
   35  44  33  43  32  41  35  36  35   42   37   42
   40  40  39  40  40  39  39  37  39   35   41   40
   44  39  45  40  41  42  37  43  37   38   38   35
   40  39  42  39  43  38  44  38  44   37   46   33
   48  31  49  38  49  38  50  38  51   37   53   36
   53  32  53  32  54  37  57  38  57   37   57   37
   51  39  49  34  49  33  50  40  53   39   52   39
   51  39  52  38  56  34  59  32  58   38   58   38
   59  38  61  37  61  35  61  33  58   31   57   36
   58  37  59  38  62  38  62  37  64   34   63   31
   58  31  58  35  61  37  62  36  64   38   67   36
   68  35  68  40  69  40  69  40  67   37   67   37
   67  33  65  31  64  36  64  35  63   35   63   36
   64  35  63  31  65  31  66  39  68   41   68   40
   68  40  69  41  69  37  66  33  65   37   64   36
   65  36  67  37  68  37  70  37  70   35   71   37
   69  40  70  41  68  41  66  38  67   34   69   34
   69  41  72  45  74  46  73  46  71   40   69   35
   69  34  70  42  71  43  73  45  74   47   74   46
   74  42  74  41  71  41  71  41  72   45   75   49
   74  45  70  34  69  32  69  38  71   40   69   40
   70  42  72  43  70  35  69  32  70   39   71   42
   71  41  69  38  67  36  67  33  69   34   69   39
   70  36  69  38  68  38  68  38  70   35   71   35
   69  39  69  41  70  42  72  45  72   45   72   36
   68  32  66  39  68  43  67  39  64   38   62   39
   62  34  62  30  62  31  65  37  63   37   60   37
   61  36  59  33  59  32  58  37  57   37   58   36
   59  37  60  37  61  34  59  32  56   37   56   38
   58  35  59  36  58  38  58  34  57   33   55   38
   54  39  52  38  52  39  49  40  48   37   47   36
   48  41  48  41  46  41  49  39  50   37   51   35
   51  33  49  40  50  40  49  40  50   40   50   40
   48  37  47  35  48  42  46  43  45   41   47   40
   45  41  43  39  43  37  45  41  44   42   45   42
   43  43  44  41  45  37  45  34  45   42   41   43
   40  43  40  42  41  41  40  38  41   35   44   39
   43  40  42  42  42  42  42  41  43   35   41   37
   41  42  40  42  40  43  39  44  38   43   37   41
   38  39  39  44  37  44  36  45  35   38   35   41
   34  40  33  41  32  48  33  46  35   44   35   44
   36  44  36  42  33  42  32  47  32   47   32   47
   31  47  31  49  32  43  32  43  32   48   32   47
   32  51  31  55  31  53  31  48  31   48   30   59
   29  59  29  57  29  52  30  45  30   40   31   44
   30  51  30  46  31  45  31  46  31   44   30   43
   29  46  29  52  27  55  28  52  28   53   28   52
   29  44  29  43  29  48  29  53  28   57   28   54
   28  51  28  48  27  50  28  52  27   52   27   54
   25  55  25  57  25  52  25  52  25   53   26   51
   25  54  25  53  25  50  25  47  25   47   26   50
   27  49  28  48  29  49  29  48  28   44   28   43
   27  48  27  46  28  49  27  51  26   52   26   49
   26  48  27  50  27  50  27  51  27   50   28   48
   28  46  28  42  28  45  30  44  31   43   31   43
   31  42  31  40  32  38  32  42  32   41   32   41
   32  42  33  39  33  36  35  34  37   38   37   38
   37  43  32  46  32  43  32  39  32   39   32   43
   32  44  31  46  32  45  32  45  32   38   32   38
   32  42  32  40  33  39  36  40  40   38   39   35
   38  35  36  42  35  41  37  40  41   38   41   39
   40  36  41  34  39  41  38  41  40   40   39   41
   39  41  39  37  39  36  38  43  37   42   35   43
   39  40  38  43  35  39  37  37  39   41   42   38
   41  40  42  38  44  35  47  33  49   31   51   35
   52  35  52  36  52  35  51  35  51   32   52   31
   52  35  53  37  55  36  56  37  59   38   60   34
   58  32  57  36  56  35  56  36  55   37   53   37
   50  36  50  33  52  37  54  37  55   36   54   37
   54  36  55  32  56  30  57  36  58   36   57   37
   58  38  60  37  58  33  57  31  59   32   61   36
   60  36  58  37  60  37  58  34  58   32   60   37
   59  37  61  41  63  42  65  42  65   37   64   32
   68  39  67  39  64  37  62  36  60   35   60   32
   63  30  64  36  64  37  61  35  63   38   68   39
   69  34  66  31  65  36  65  36  66   36   67   38
   69  40  71  39  72  35  70  36  72   34   73   40
   74  41  73  41  73  41  75  39  75   44   73   40
   74  43  76  45  77  44  76  40  74   36   71   36
   68  37  66  37  67  36  67  36  69   33   71   33
   71  42  71  41  73  42  74  44  75   44   75   40
   75  39  73  46  72  44  73  44  72   43   73   43
   75  38  74  34  73  41  74  41  73   42   74   44
   77  46  78  42  75  35  73  44  71   39   65   36
   65  36  66  36  67  33  68  32  69   38   68   38
   69  41  70  43  72  43  73  39  71   36   69   41
   66  39  67  39  64  37  63  35  62   32   64   29
   65  32  64  37  64  37  65  38  63   37   65   36
   63  31  62  37  60  37  60  37  60   37   58   36
   60  34  61  33  63  41  63  38  58   37   55   37
   54  38  51  36  51  33  51  38  53   38   52   37
   54  38  56  37  56  33  56  31  54   37   52   38
   49  40  49  41  46  42  45  39  43   37   44   41
   46  41  48  40  50  39  51  38  50   37   49   35
   49  40  50  40  49  41  51  39  51   38   49   36
   51  34  51  40  51  40  55  38  55   39   50   40
   49  38  50  36  50  40  51  38  54   40   50   43
   46  42  44  38  45  37  47  43  46   45   41   47
   39  48  38  46  38  43  38  42  38   48   36   49
   35  49  35  49  35  50  34  46  34   45   34   52
   34  52  33  52  33  43  33  43  33   43   33   44
   33  50  33  52  32  52  33  53  33   50   33   49
   33  46  33  53  32  57  33  56  32   55   32   55
   32  52  32  55  32  61  31  60  31   60   30   60
   30  57  30  56  30  55  30  58  29   59   29   58
   28  61  28  59  28  55  27  54  27   52   27   54
   28  53  28  54  29  53  29  51  28   51   28   51
   28  55  29  50  29  48  30  48  30   44   30   44
   29  51  28  50  28  48  28  49  29   48   29   47
   30  45  29  51  29  53  28  51  28   52   27   53
   26  47  26  46  27  49  27  48  27   53   26   52
   27  49  27  46  27  45  27  51  28   51   28   52
   26  57  24  57  25  48  27  45  27   49   28   49
   27  52  27  55  26  54  25  54  25   51   26   53
   26  54  26  56  26  55  26  55  26   53   26   49
   26  51  26  56  26  57  26  53  26   53   27   48
   27  48  27  54  27  56  27  52  27   48   28   46
   29  44  30  42  30  46  31  48  31   46   31   47
   31  47  30  43  30  44  29  47  30   45   31   44
   31  44  31  44  31  41  31  41  31   44   31   43
   31  43  31  45  31  47  32  46  31   44   30   48
   30  46  31  45  31  45  31  44  31   41   32   39
   31  43  32  44  32  44  32  43  32   41   32   40
   33  38  34  44  34  42  34  44  36   42   35   40
   37  36  36  37  32  45  34  43  37   40   40   39
   42  38  40  38  34  39  33  41  38   39   43   38
   46  36  46  35  49  33  52  32  53   37   52   37
   51  36  51  37  52  36  51  34  51   33   50   37
   51  37  54  37  56  36  55  35  56   32   57   31
   60  39  61  40  60  37  60  36  59   36   62   34
   59  31  54  37  51  38  49  39  52   37   55   36
   58  32  59  30  60  31  62  37  62   35   63   36
   60  35  60  32  61  30  61  36  59   37   59   37
   62  36  64  37  65  34  67  34  66   38   66   38
   66  38  65  37  64  36  64  32  65   31   64   37
   63  36  64  36  65  36  65  35  66   33   69   36
   72  46  72  44  72  46  73  46  75   44   72   36
   67  29  67  35  68  39  69  32  68   36   70   40
   72  38  74  38  75  46  74  42  71   38   72   40
   73  42  74  39  74  37  73  43  75   47   77   46
   78  46  78  44  78  41  77  38  78   44   73   38
   72  38  70  37  69  37  71  34  72   35   74   46
   77  47  76  43  74  43  77  48  79   46   79   45
   79  50  79  51  79  50  74  40  71   38   72   36
   71  33  69  39  70  41  70  40  69   38   69   38
   68  33  68  33  69  40  71  42  73   44   73   46
   73  45  73  39  71  36  69  42  69   43   69   42
   67  38  65  36  65  33  68  33  66   32   66   39
   70  45  71  45  67  37  63  32  63   30   62   34
   62  35  62  35  61  35  59  35  58   32   59   30
   60  36  61  36  62  34  61  35  59   35   58   32
   56  31  53  36  54  37  55  37  56   38   57   37
   58  34  59  32  57  37  58  37  56   37   53   38
   49  41  46  38  47  36  50  40  52   40   52   40
   50  40  52  38  52  36  51  36  49   43   46   43
   46  41  48  40  47  41  46  37  45   37   46   43
   47  43  44  45  43  47  40  46  38   42   40   38
   41  44  42  44  45  42  46  42  43   43   43   38
   43  36  45  40  43  42  43  43  42   43   41   42
   41  38  41  38  42  42  41  41  44   41   44   41
   44  40  46  37  45  38  39  46  37   44   38   43
   40  36  40  38  40  42  38  42  36   50   35   52
   36  51  37  51  37  48  37  45  37   44   37   47
   36  47  36  48  36  50  35  49  35   46   34   44
   34  49  34  50  34  49  33  50  33   50   33   45
   34  43  33  47  33  49  32  50  31   51   31   51
   31  48  30  49  29  49  29  48  29   52   29   51
   29  52  28  51  28  50  26  53  26   49   25   55
   26  52  27  49  28  43  27  45  27   48   29   45
   31  45  31  46  31  43  31  42  31   42   30   49
   29  51  28  51  28  52  25  54  26   49   26   47
   27  50  27  51  24  54  23  52  27   47   26   47
   25  49  21  57  23  56  24  54  24   53   24   53
   25  47  25  48  23  54  24  49  27   47   29   47
   30  47  30  46  27  44  28  48  29   48   29   47
   30  44  30  45  30  41  30  40  31   43   31   46
   31  46  30  46  30  46  31  41  30   43   28   53
   26  53  25  52  25  54  23  53  22   50   20   50
   23  51  25  49  25  51  25  52  25   51   26   49
   24  48  26  48  29  45  30  44  29   47   29   45
   29  41  30  40  31  45  30  48  29   51   27   53
   27  50  28  44  27  44  27  48  28   44   30   42
   31  43  31  43  31  43  31  40  31   47   31   49
   31  50  31  49  31  47  31  42  31   39   32   46
   32  43  33  45  34  43  37  40  41   35   44   33
   46  39  47  40  47  38  43  41  38   43   38   39
   38  39  37  44  41  42  42  43  37   45   37   42
   38  41  40  38  41  41  42  41  41   42   40   42
   43  40  46  37  45  36  44  42  41   43   41   42
   41  43  43  41  45  37  47  34  49   39   50   39
   53  39  50  40  49  40  48  36  49   35   51   40
   52  39  54  39  51  40  50  39  52   35   55   32
   57  34  60  40  62  42  62  43  62   41   63   36
   60  33  60  38  61  38  62  39  62   40   61   39
   61  35  64  37  66  43  65  39  65   39   62   38
   64  38  66  34  66  32  67  39  67   41   69   42
   67  39  67  39  68  39  71  38  73   47   73   47
   72  46  73  46  73  48  75  48  75   46   73   49
   72  45  72  44  70  33  72  41  75   41   73   38
   72  42  73  44  70  39  69  39  71   39   73   38
   74  39  75  48  76  49  76  47  75   46   77   47
   77  45  76  40  71  38  68  37  69   38   71   43
   73  45  73  41  72  36  72  43  73   47   73   46
   71  39  69  37  69  35  70  34  70   39   69   38
   71  43  74  47  73  43  70  37  71   38   69   40
   68  38  67  39  67  39  66  38  65   33   63   31
   65  38  65  40  67  40  68  41  69   42   70   40
   71  40  73  47  73  45  72  45  71   45   71   42
   71  40  72  37  70  36  68  41  69   44   71   45
   72  47  73  44  73  41  70  43  67   40   67   41
   67  41  67  40  65  35  62  34  64   41   66   41
   66  41  64  38  61  37  58  32  56   31   55   38
   54  39  55  39  54  39  53  39  54   36   54   34
   58  38  55  40  52  40  51  41  51   39   50   36
   49  35  49  39  49  40  48  40  50   38   53   38
   50  38  46  37  47  40  46  40  44   42   45   43
   44  44  42  42  42  40  41  44  40   42   40   46
   39  47  39  47  40  43  41  42  42   48   38   49
   33  50  34  51  33  50  34  45  34   45   34   48
   34  49  34  47  36  46  36  45  37   42   37   44
   35  48  35  49  34  50  34  51  34   51   33   47
   33  43  34  46  34  46  35  46  36   48   36   48
   36  46  33  48  32  53  32  52  31   52   31   41
   32  45  31  48  31  46  30  55  30   56   29   56
   29  55  29  53  30  47  28  49  29   51   30   49
   30  49  30  49  30  48  30  44  31   44   31   53
   31  52  31  50  31  50  31  51  31   47   31   47
   31  54  30  52  30  48  30  51  30   50   31   45
   31  45  31  50  30  52
;

proc sgplot data=utility;
    loess x=temp y=load / smooth=0.4;
run;

ods output OutlierSummary = loadbreaks(drop=_group_ BreakType);

proc ucm data=utility;
   id date interval=day;
   model load;
   autoreg;
   level plot=smooth;
   splinereg temp knots=30 40 50 65 75 degree=3
      variance=0 noest;
   season length=7 var=0 noest;
   estimate plot=panel back=60
      extradiffuse=50;
   outlier maxnum=10;
   forecast back=60 lead=60
      extradiffuse=50;
run;

proc print data=loadbreaks noobs;
run;