我有数据显示动物何时来到测量站。 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中执行循环线性回归以确定峰值活动时间。因变量可以是DateTime或HourOfDay,以较容易的为准。我想将协变量Site_ID(随机效应),加上MinTemp,LunarPhase和Habitat合并到混合效果模型中。
我已尝试使用程序循环的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)
也许这是圆形包装的不恰当应用。如果是这样,我愿意接受使用数据和协变量调查峰值活动的模型和/或图形的其他建议。
注意:我确实搜索了相关的讨论并找到this somewhat relevant thread,但它从未得到回答,没有在R中请求解决方案,并且范围不同。
答案 0 :(得分:0)
具体问题是由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
对象。