P样条更平滑

时间:2017-04-10 14:03:36

标签: r regression spline smoothing mgcv

您好我试图找到非参数回归平滑来控制和治疗组之间的差异,以确定食欲抑制剂随时间的有效性。那么我需要用我的模型来估计治疗组和对照组之间 t = 0 t = 50 之间的差异。

我想使用 P-spline更顺畅,但我没有足够的背景知识 这是我的数据:

t

0 1 3 7 8 10 14 15 17 21 22 24 28 29 31 35 36 38 42 43 45 49 50 52 56 57 59 63 64 70 73 77 80 84 87 91 94 98 105 

CON

20.5 19.399 22.25 17.949 19.899 21.449 16.899 21.5 22.8 24.699 26.2 28.5 24.35 24.399 26.6 26.2 26.649 29.25 27.55 29.6 24.899 27.6 28.1 27.85 26.899 27.8 30.25 27.6 27.449 27.199 27.8 28.199 28 27.3 27.899 28.699 27.6 28.6 27.5  

TRT

21.3 16.35 19.25 16.6 14.75 18.149 14.649 16.7 15.05 15.5 13.949 16.949 15.6 14.699 14.15 14.899 12.449 14.85 16.75 14.3 16 16.85 15.65 17.149 18.05 15.699 18.25 18.149 16.149 16.899 18.95 22 23.6 23.75 27.149 28.449 25.85 29.7  29.449

其中:

t - 实验开始后的天数 con - 对照组的食物摄入量中位数 trt - 治疗组的食物摄入量中位数。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

只是为了给你一个开始。 mgcv包实现了各种回归样条基础,包括P样条(带有差异惩罚的惩罚B样条)。

首先,您需要设置数据:

dat <- data.frame(time = rep(t, 2), y = c(con, trt), 
                  grp = gl(2, 39, labels = c("con", "trt")))

然后调用gam进行非参数回归:

library(mgcv)  # no need to install; it comes with R
fit <- gam(y ~ s(time, bs = 'ps', by = grp) + grp, data = dat)

阅读mgcv: how to specify interaction between smooth and factor?以了解互动规范。 bs = 'ps'设置P样条基础。默认情况下,选择10(均匀间隔内部)结。如果需要,您可以更改k

有关mgcv中P-splines的更多信息,请阅读mgcv: how to extract knots, basis, coefficients and predictions for P-splines in adaptive smooth?