我正在构建一个模型,其中我的几个协变量生活在一个“圆圈”上,因为它们在区间 [0,1) 和 0=1 中取值。我想知道处理这种情况的技术。一个想法是将循环变量 theta 表示为一对变量( sin(theta), cos(theta) )。对这种方法或更好的方法有什么想法吗?
我专门使用 mgcv 包 GAMs。有没有办法告诉模型某些附加部分应该在端点处具有相同的值?另一个包裹?
谢谢!
我正在构建一个模型,其中我的几个协变量生活在一个“圆圈”上,因为它们在区间 [0,1) 和 0=1 中取值。我想知道处理这种情况的技术。一个想法是将循环变量 theta 表示为一对变量( sin(theta), cos(theta) )。对这种方法或更好的方法有什么想法吗?
我专门使用 mgcv 包 GAMs。有没有办法告诉模型某些附加部分应该在端点处具有相同的值?另一个包裹?
谢谢!
有两种处理循环变量的方法,一种方法是在边界条件的任一侧手动复制数据集,但我认为更优雅的解决方案是使用具有周期性边界条件的内置样条基函数!
例如:
bs="cc"
指定循环三次回归样条(请参阅 参考资料cyclic.cubic.spline
)。即一个惩罚三次回归样条,其末端匹配,直到二阶导数。
球体上的样条线
bs="sos"
. 这些是球体上的二维样条。参数是纬度和经度,它们类似于球体的薄板样条。当适合各向同性时,对于在全球大部分地区采样的数据很有用。详情请参阅Spherical.Spline
。
bs="cp"
给出 P 样条的循环版本
您可能想研究Gill 和 Hangartner (2010)。政治学中的循环数据及其处理方法。他们讨论了循环/时钟/季节性数据的各种模型,Jeff Gill 为论文提供了R 代码,您可以从中寻找灵感。该材料应该有一个演示版本,它将方法论和 R 代码结合在一起。