Hello,

I'm running mixed models in GAMM4 with 2 (non-nested) random intercepts and
I want to include a spline term for one of my exposure variables.  However,
when I include a spline term, I always get reported degrees of freedom of
less than 1, even when I know that my spline is using more than 1 degree of
freedom.  For example, here is the code for my model:

> global.gamm4<-gamm4(zcog~s(adjpatx, fx=TRUE, k=5)+int234+cogagec+cogagesq
+
+         + oldfran +newus +alc2 +alc3 +alc4 +alcmiss +smk2 +smk3
+                 +mdinc10c +mdinc10sq+ pwhtc +pwhtsq  +edu2+ edu3 +husbgs
+husbcol+ husbmiss
+                  +currpmh +pastpmh +neverpmh, random= ~(1|id)
+(1|cogtest), data=global)

Using > summary(global.gamm4$mer), I get the following output for my spline
term, indicating that I use the expected 4 degrees of freedom.

Xs(adjpatx)Fx1  0.1018943  0.1073225   0.949
Xs(adjpatx)Fx2 -0.0708114  0.1123845  -0.630
Xs(adjpatx)Fx3  0.7459511  0.6836413   1.091
Xs(adjpatx)Fx4 -0.2062321  0.0923569  -2.233

However, when I use > summary(global.gamm4$gam).  I get an estimate of
degrees of freedom that is not 4:

Approximate significance of smooth terms:
              edf Ref.df     F p-value
s(adjpatx) 0.7588 0.7588 1.346   0.234

This degree of freedom = 0.76 also shows up on my plot.

Ultimately, I would like to use a cubic regression penalized spline,
allowing R to choose the degrees of freedom for me using GCV.  However, when
I use the correct code for this or variants of it using mgcv, I also get
degrees of freedom less than 1.  For example, in the following code provides
a degree of freedom of less than 1 as well:


> global.gamm4<-gamm4(zcog~s(adjpatx, fx=FALSE)+int234+cogagec+cogagesq +
+         + oldfran +newus +alc2 +alc3 +alc4 +alcmiss +smk2 +smk3
+                 +mdinc10c +mdinc10sq+ pwhtc +pwhtsq  +edu2+ edu3 +husbgs
+husbcol+ husbmiss
+                  +currpmh +pastpmh +neverpmh, random= ~(1|id)
+(1|cogtest), data=global)

Output indicating that this spline should probably look linear:

> summary(global.gamm4$mer)
Random effects:
 Groups   Name        Variance  Std.Dev.
 id       (Intercept) 0.1823454 0.427019
 cogtest  (Intercept) 0.0025498 0.050496
 Xr.1     s(adjtibx)  0.0000000 0.000000
 Residual             0.7782969 0.882211

Xs(adjtibx)Fx1 -0.0387360  0.0215596  -1.797


Output getting a df for this spline of 0.20.

> summary(global.gamm4$gam)

Approximate significance of smooth terms:
              edf Ref.df     F p-value
s(adjtibx) 0.2009 0.2009 16.07      NA

The plot looks linear, but reports a df =0.20.


So...to summarize my questions:

1.  Are the splines produced by s(exp, fx=FALSE) or s(exp, fx=TRUE, k=k)
correct even though the reported degrees of freedom appears to be wrong?

2.  Can I believe my plot?

3.  How can I get the true df used when I use s(exp, fx=FALSE)?





Thanks for any and all help you can provide!

Melinda

	[[alternative HTML version deleted]]

