如何在回归模型中指定角度预测变量`sun_altitude`的周期性?

问题描述

我正在R中使用软件包momentuHMM,该软件包使用隐马尔可夫模型分析数据。但是,系数估计值是使用线性回归计算的。

如果我想将Hour(格式:24小时)用作给定Y因变量的预测变量,则应指定Y ~ cosinor(Hour,period = 24)。余弦函数自动合并sin()cos()以及它们之间的相互作用。

我想知道如果我使用变量period时应在上述函数cosinor()的{​​{1}}中指示哪个值,其值的范围在-1.3(夜晚)至1.2(午夜)之间)。我应该在sun_altitude中指出什么? 2.5?我的疑问是,由于periodHour在意义上不同,对于sun_altitude,在值Hour之后,下一个值是23,因此最大值并且此预测变量的最小值更接近0000。但是,12sun_altitude不同,因为0的值和1.2的值比1.2-1.2间的值更近。也就是说,对于sun_altitude,变量之间的最大值和最小值之间的距离并不比最小值和中等值之间的距离更近。

在指定period时我应该考虑吗?

下面,我展示一些代码,以sun_altitudes创建数据框,以防万一有人想看看:

df <- seq(as.POSIXct("2016-07-29 00:00:00",format="%Y-%m-%d %H:%M:%s",tz="UTC"),as.POSIXct("2016-07-31 23:45:00","15 min")
df<- as.data.frame(df)
colnames(df)<- c("Round_datetime15")
df[2]<-getSunlightPosition(date=df$Round_datetime15,lat= 37.6,lon=-0.65,keep = ("altitude"))[4]
range(df$altitude)

注意:一天之内没有达到太阳高度的最大值和最小值。夏季达到太阳的最大值,冬季达到最小值。

解决方法

我没有足够的声誉来发表评论,所以我将此作为答案发布。

我不清楚为什么在这种情况下会包含太阳高度的周期性影响。正如您在时间的情况下提到的,当两端需要匹配时,应考虑周期性效应(例如,时间的影响在 23:59 和 00:00 应非常相似)。从你写的内容来看,听起来太阳高度的影响不应该在 -1.3 和 1.2 处匹配,所以我认为你不需要 cosinor 函数。

因此,我认为您可以按原样在公式中包含协变量,即 ~ sun_altitude