Skip to main content
edited title
Link
user88
user88

Spline df selection in a General Additivegeneral additive Poisson Modelmodel problem

Notice removed Draw attention by Fomite
Bounty Ended with Gavin Simpson's answer chosen by Fomite
Notice added Draw attention by Fomite
Bounty Started worth 50 reputation by Fomite
Tweeted twitter.com/#!/StackStats/status/197916949232095232
added 17 characters in body
Source Link
Fomite
  • 23.7k
  • 13
  • 88
  • 147

I've been fitting some time series data using a Poisson general additive model using SAS's PROC GAM. Generally speaking, I've been having it's built-in generalized cross-validation procedure generate at least a decent "starting point" for my single spline, which is a non-linear function of time along with a single parametric term (the one I'm actually interested in).

So far, it's worked rather swimmingly, with the exception of one of my data sets. There are 132 observations in that data set, and GCV suggests a spline of 128 degrees of freedom. That seems...wrong. Very wrong. More importantly, it's also not at all stable. I tried a second approach, using something like a "Change in Estimate" criteria to stop adding degrees of freedom when the estimate of the parametric term stops changing because why continue to add control if nothing's different?

The problem is that the estimate isn't at all stable. I tried the following degrees of freedom, and as you can see, the parametric term bounces around wildly:

DF: Parametric Estimate:
1   -0.76903
2   -0.56308
3   -0.47103
4   -0.43631
5   -0.33108
6   -0.1495
7    0.0743
8    0.33459
9    0.62413
10   0.92161
15   1.88763
20   1.98869
30   2.5223
40-60 had convergence issues
70   7.5497
80   7.22267
90   6.71618
100  5.83808
110  4.61436
128  1.32347

I've no intuition at all about what I should be using in terms of df for this particular bit of data. Any other ideas for how to choose a df? Should I be looking at the significance of the spline?

Doing some more looking between df = 10 and df = 15, it looks like df = 12 is the closest you can come to the estimate generated by 128 and still be in the single-digit numbers"reasonable degrees of freedom" range. Along with the linear term, the intercept and the single parametric term, that feels like a pretty heavily saturated model. Is it justifiable to just go with 12?

As a second update, changing the smoothing from spline(t) to loess(t) is resulting in much more well-behaved df estimates - should I just switch to loess smoothing?

I've been fitting some time series data using a Poisson general additive model using SAS's PROC GAM. Generally speaking, I've been having it's built-in generalized cross-validation procedure generate at least a decent "starting point" for my single spline, which is a non-linear function of time along with a single parametric term (the one I'm actually interested in).

So far, it's worked rather swimmingly, with the exception of one of my data sets. There are 132 observations in that data set, and GCV suggests a spline of 128 degrees of freedom. That seems...wrong. Very wrong. More importantly, it's also not at all stable. I tried a second approach, using something like a "Change in Estimate" criteria to stop adding degrees of freedom when the estimate of the parametric term stops changing because why continue to add control if nothing's different?

The problem is that the estimate isn't at all stable. I tried the following degrees of freedom, and as you can see, the parametric term bounces around wildly:

DF: Parametric Estimate:
1   -0.76903
2   -0.56308
3   -0.47103
4   -0.43631
5   -0.33108
6   -0.1495
7    0.0743
8    0.33459
9    0.62413
10   0.92161
15   1.88763
20   1.98869
30   2.5223
40-60 had convergence issues
70   7.5497
80   7.22267
90   6.71618
100  5.83808
110  4.61436
128  1.32347

I've no intuition at all about what I should be using in terms of df for this particular bit of data. Any other ideas for how to choose a df? Should I be looking at the significance of the spline?

Doing some more looking between df = 10 and df = 15, it looks like df = 12 is the closest you can come to the estimate generated by 128 and still be in the single-digit numbers. Along with the linear term, the intercept and the single parametric term, that feels like a pretty heavily saturated model. Is it justifiable to just go with 12?

As a second update, changing the smoothing from spline(t) to loess(t) is resulting in much more well-behaved df estimates - should I just switch to loess smoothing?

I've been fitting some time series data using a Poisson general additive model using SAS's PROC GAM. Generally speaking, I've been having it's built-in generalized cross-validation procedure generate at least a decent "starting point" for my single spline, which is a non-linear function of time along with a single parametric term (the one I'm actually interested in).

So far, it's worked rather swimmingly, with the exception of one of my data sets. There are 132 observations in that data set, and GCV suggests a spline of 128 degrees of freedom. That seems...wrong. Very wrong. More importantly, it's also not at all stable. I tried a second approach, using something like a "Change in Estimate" criteria to stop adding degrees of freedom when the estimate of the parametric term stops changing because why continue to add control if nothing's different?

The problem is that the estimate isn't at all stable. I tried the following degrees of freedom, and as you can see, the parametric term bounces around wildly:

DF: Parametric Estimate:
1   -0.76903
2   -0.56308
3   -0.47103
4   -0.43631
5   -0.33108
6   -0.1495
7    0.0743
8    0.33459
9    0.62413
10   0.92161
15   1.88763
20   1.98869
30   2.5223
40-60 had convergence issues
70   7.5497
80   7.22267
90   6.71618
100  5.83808
110  4.61436
128  1.32347

I've no intuition at all about what I should be using in terms of df for this particular bit of data. Any other ideas for how to choose a df? Should I be looking at the significance of the spline?

Doing some more looking between df = 10 and df = 15, it looks like df = 12 is the closest you can come to the estimate generated by 128 and still be in the "reasonable degrees of freedom" range. Along with the linear term, the intercept and the single parametric term, that feels like a pretty heavily saturated model. Is it justifiable to just go with 12?

As a second update, changing the smoothing from spline(t) to loess(t) is resulting in much more well-behaved df estimates - should I just switch to loess smoothing?

added 42 characters in body
Source Link
Fomite
  • 23.7k
  • 13
  • 88
  • 147

I've been fitting some time series data using a Poisson general additive model using SAS's PROC GAM. Generally speaking, I've been having it's built-in generalized cross-validation procedure generate at least a decent "starting point" for my single spline, which is a non-linear function of time along with a single parametric term (the one I'm actually interested in).

So far, it's worked rather swimmingly, with the exception of one of my data sets. There are 132 observations in that data set, and GCV suggests a spline of 128 degrees of freedom. That seems...wrong. Very wrong. More importantly, it's also not at all stable. I tried a second approach, using something like a "Change in Estimate" criteria to stop adding degrees of freedom when the estimate of the parametric term stops changing because why continue to add control if nothing's different?

The problem is that the estimate isn't at all stable. I tried the following degrees of freedom, and as you can see, the parametric term bounces around wildly:

DF: Parametric Estimate:
1   -0.76903
2   -0.56308
3   -0.47103
4   -0.43631
5   -0.33108
6   -0.1495
7    0.0743
8    0.33459
9    0.62413
10   0.92161
15   1.88763
20   1.98869
30   2.5223
40-60 had convergence issues
70   7.5497
80   7.22267
90   6.71618
100  5.83808
110  4.61436
128  1.32347

I've no intuition at all about what I should be using in terms of df for this particular bit of data. Any other ideas for how to choose a df? Should I be looking at the significance of the spline?

Doing some more looking between df = 10 and df = 15, it looks like df = 12 is the closest you can come to the estimate generated by 128 and still be in the single-digit numbers. Along with the linear term, the intercept and the single parametric term, that feels like a pretty heavily saturated model. Is it justifiable to just go with 12?

As a second update, changing the smoothing from spline(t) to loess(t) is resulting in much more well-behaved df estimates. - should I just switch to loess smoothing?

I've been fitting some time series data using a Poisson general additive model using SAS's PROC GAM. Generally speaking, I've been having it's built-in generalized cross-validation procedure generate at least a decent "starting point" for my single spline, which is a non-linear function of time along with a single parametric term (the one I'm actually interested in).

So far, it's worked rather swimmingly, with the exception of one of my data sets. There are 132 observations in that data set, and GCV suggests a spline of 128 degrees of freedom. That seems...wrong. Very wrong. More importantly, it's also not at all stable. I tried a second approach, using something like a "Change in Estimate" criteria to stop adding degrees of freedom when the estimate of the parametric term stops changing because why continue to add control if nothing's different?

The problem is that the estimate isn't at all stable. I tried the following degrees of freedom, and as you can see, the parametric term bounces around wildly:

DF: Parametric Estimate:
1   -0.76903
2   -0.56308
3   -0.47103
4   -0.43631
5   -0.33108
6   -0.1495
7    0.0743
8    0.33459
9    0.62413
10   0.92161
15   1.88763
20   1.98869
30   2.5223
40-60 had convergence issues
70   7.5497
80   7.22267
90   6.71618
100  5.83808
110  4.61436
128  1.32347

I've no intuition at all about what I should be using in terms of df for this particular bit of data. Any other ideas for how to choose a df? Should I be looking at the significance of the spline?

Doing some more looking between df = 10 and df = 15, it looks like df = 12 is the closest you can come to the estimate generated by 128 and still be in the single-digit numbers. Along with the linear term, the intercept and the single parametric term, that feels like a pretty heavily saturated model. Is it justifiable to just go with 12?

As a second update, changing the smoothing from spline(t) to loess(t) is resulting in much more well-behaved df estimates.

I've been fitting some time series data using a Poisson general additive model using SAS's PROC GAM. Generally speaking, I've been having it's built-in generalized cross-validation procedure generate at least a decent "starting point" for my single spline, which is a non-linear function of time along with a single parametric term (the one I'm actually interested in).

So far, it's worked rather swimmingly, with the exception of one of my data sets. There are 132 observations in that data set, and GCV suggests a spline of 128 degrees of freedom. That seems...wrong. Very wrong. More importantly, it's also not at all stable. I tried a second approach, using something like a "Change in Estimate" criteria to stop adding degrees of freedom when the estimate of the parametric term stops changing because why continue to add control if nothing's different?

The problem is that the estimate isn't at all stable. I tried the following degrees of freedom, and as you can see, the parametric term bounces around wildly:

DF: Parametric Estimate:
1   -0.76903
2   -0.56308
3   -0.47103
4   -0.43631
5   -0.33108
6   -0.1495
7    0.0743
8    0.33459
9    0.62413
10   0.92161
15   1.88763
20   1.98869
30   2.5223
40-60 had convergence issues
70   7.5497
80   7.22267
90   6.71618
100  5.83808
110  4.61436
128  1.32347

I've no intuition at all about what I should be using in terms of df for this particular bit of data. Any other ideas for how to choose a df? Should I be looking at the significance of the spline?

Doing some more looking between df = 10 and df = 15, it looks like df = 12 is the closest you can come to the estimate generated by 128 and still be in the single-digit numbers. Along with the linear term, the intercept and the single parametric term, that feels like a pretty heavily saturated model. Is it justifiable to just go with 12?

As a second update, changing the smoothing from spline(t) to loess(t) is resulting in much more well-behaved df estimates - should I just switch to loess smoothing?

added 152 characters in body
Source Link
Fomite
  • 23.7k
  • 13
  • 88
  • 147
Loading
added 343 characters in body
Source Link
Fomite
  • 23.7k
  • 13
  • 88
  • 147
Loading
Source Link
Fomite
  • 23.7k
  • 13
  • 88
  • 147
Loading