我有显示动物何时到达调查站的数据。 example csv file here数据的前几行如下所示:

Site_ID   DateTime            HourOfDay MinTemp LunarPhase       Habitat
F1        6/12/2013 14:01:00  14             -1       0           river
F1        6/12/2013 14:23:00  14             -1       0           river
F2        6/13/2013 1:21:00   1               3       1           upland
F2        6/14/2013 1:33:00   1               4       2           upland
F3        6/14/2013 1:48:00   1               4       2           river
F3        6/15/2013 11:08:00  11              0       0           river

我想在R中执行圆线性回归以确定峰值 Activity 时间。因变量可以是DateTime或HourOfDay,以较容易的为准。我想将协变量Site_ID(随机效应)以及MinTemp,LunarPhase和Habitat合并到一个混合效应模型中。

我尝试使用程序circular的lm.circular函数,并具有以下代码:
data<-read.csv("StackOverflowExampleData.csv")
data$DateTime<-as.POSIXct(as.character(data$DateTime), format = "%m/%d/%Y %H:%M:%S")
data$LunarPhase<-as.factor(data$LunarPhase)
str(data)

library(circular)

y<-data$DateTime
y<-circular(y, units ="hours",template = "clock24",rotation = "clock")
x<-data[,c(1,4,5,6)]
lm.circular(y=y, x=x, init=c(1,1,1,1), type='c-l', verbose=TRUE)

我不断收到错误:
Error in Ops.POSIXt(x, 12) : '/' not defined for "POSIXt" objects

显然,这是一个已知的错误,但this threat about it令我感到困惑,无法确定适当的解决方法。有什么建议吗?

另外,我对这些数据的最终目标是运行glm的圆线性版本,然后使用AIC或其他某些信息理论方法相互比较测试多个模型。我正在寻找的模型将是诸如此类的圆线性版本:
glmer(HourOfDay~MinTemp+LunarPhase+Habitat+(1|Site_ID),family=binomial,data=data)

也许这是循环包装的不适当应用。如果是这样,我愿意接受其他有关模型和/或图形的建议,这些建议将使用数据和协变量来调查峰值 Activity 。

注意:我确实搜索了相关讨论,并找到了this somewhat relevant thread,但是它从未得到回答,没有在R中请求解决方案,并且具有不同的范围。

最佳答案

具体问题是由conversion.circular引起的。在那里,一个POSIXlt对象被12除。这是一个结果不确定的操作:

> as.POSIXlt('2005-07-16') / 2
Error in Ops.POSIXt(as.POSIXlt("2005-07-16"), 2) :
  '/' not defined for "POSIXt" objects

因此,似乎您不能使用此类的数据作为circular包的输入。我在示例中找不到POSIXlt数据。也许您需要简单地将时间戳记指定为数字,而不是POSIXlt对象。

关于r - R中具有协变量的圆线性回归,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22726311/

10-10 05:30