2014-03-29 92 views
3

我有數據顯示動物何時來到一個測量站。 example csv file here數據的前幾行是這樣的:R中有協變量的循環線性迴歸

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 

顯然,這是一個已知的bug,但我很困惑this threat about it,並不能確定一個適當的解決辦法。建議?

此外,我的這個數據的最終目標是運行一個glm的循環線性版本,然後使用AIC或其他一些信息理論方法來測試多個模型。我正在尋找的模式將是什麼圓形線性版本是這樣的:

glmer(HourOfDay~MinTemp+LunarPhase+Habitat+(1|Site_ID),family=binomial,data=data) 

也許,這就是圓形包裝的應用不當。如果是這樣,我願意接受使用數據和協變量調查高峯活動的模型和/或圖形的其他建議。

注:我沒有搜索相關討論,發現this somewhat relevant thread,但它從來沒有回答過,沒有在R中請求解決方案,並且是不同的範圍。

+0

特別是如果你想添加一個隨機效應項到這個模型,我想你必須使用類似[AD模型生成器](http://admb-project.org),可能通過R2admb包。 .. –

回答

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對象。