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]] ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.