我正在尝试在R上运行N混合模型,但是变量类型存在一些问题。 我曾经对网站进行过1-4次调查,每次都记录了变量。这意味着每个变量都有四列。 我已经建立了这段代码来创建我的模型对象
library(unmarked)
r <- dispar_1gen[, c(6:9)]
rf <- dispar_1gen[,c(10:13)]
ac <- dispar_1gen[,c(14:17)]
af <- dispar_1gen[,c(18:21)]
tt <- dispar_1gen[,c(22:25)]
hb <- dispar_1gen[,c(26:29)]
y1 <- dispar_1gen[,c(2:5)]
time1 <- matrix(rep(as.character(1:4), nrow(y1)), ncol = 4, byrow = TRUE)
sc1 <- data.frame(f.erb=scale(dispar_1gen$f.erbosa), d.alb=scale(dispar_1gen$dis.alberi))
obsc1 <- list(r=r, rf=rf, ac=ac, af=af, tt=tt, hb=hb, time=time1)
umf_1gen <- unmarkedFramePCount(y = y1,
siteCovs=sc1,
obsCovs=obsc1)
从这里开始我的恐怖故事! 我显然是在开玩笑,但我想请您帮忙!!! 当我尝试运行模型时,它会提示我该错误
dm1 <- pcount(~ rf + hb ~ ac, data=umf_1gen, control=list(trace=TRUE, REPORT=5), mixture = c("P"))
Error in model.frame.default(stateformula, siteCovs, na.action = NULL) :
invalid type (list) for variable 'ac'
我不明白为什么;如果我查看帮助页面,就会发现:
y->重复计数数据的RxJ矩阵,其中R是站点数,J是每个站点的最大采样周期数。
siteCovs->在站点级别上变化的协变量的data.frame。每个协变量应该有R行和一列
obsCovs->在站点内变化的协变量的data.frames的命名列表,或在站点主要顺序中具有RxJ行的data.frame。
为什么它告诉我它想要一个列表,但是当我尝试运行模型时,它不喜欢列表类型????
最后,“ ac”变量的结构为
str(ac)
'data.frame': 241 obs. of 4 variables:
$ X1gen.ac1: Factor w/ 3 levels "0","1","2": 2 2 3 3 1 1 1 1 1 3 ...
$ X1gen.ac2: Factor w/ 2 levels "0","2": NA NA NA NA NA NA NA NA NA NA ...
$ X1gen.ac3: Factor w/ 2 levels "0","2": NA NA NA NA NA NA NA NA NA NA ...
$ X1gen.ac4: Factor w/ 2 levels "0","2": NA NA NA NA NA NA NA NA NA NA ...
obsc1的结构是这样的
str(obsc1)
List of 7
$ r :'data.frame': 241 obs. of 4 variables:
..$ X1gen.r1: Factor w/ 4 levels "0","1","2","3": 1 2 2 2 3 3 3 2 1 1 ...
..$ X1gen.r2: Factor w/ 3 levels "0","1","2": NA NA NA NA NA NA NA NA NA NA ...
..$ X1gen.r3: Factor w/ 3 levels "0","1","2": NA NA NA NA NA NA NA NA NA NA ...
..$ X1gen.r4: Factor w/ 3 levels "0","1","2": NA NA NA NA NA NA NA NA NA NA ...
$ rf :'data.frame': 241 obs. of 4 variables:
..$ X1gen.rf1: Factor w/ 5 levels "0","1","2","3",..: 1 3 4 4 4 4 4 3 1 1 ...
..$ X1gen.rf2: Factor w/ 5 levels "0","1","2","3",..: NA NA NA NA NA NA NA NA NA NA ...
..$ X1gen.rf3: Factor w/ 5 levels "0","1","2","3",..: NA NA NA NA NA NA NA NA NA NA ...
..$ X1gen.rf4: Factor w/ 5 levels "0","1","2","3",..: NA NA NA NA NA NA NA NA NA NA ...
$ ac : Factor w/ 3 levels "0","1","2": 2 2 3 3 1 1 1 1 1 3 ...
..- attr(*, "names")= chr [1:964] "X1gen.ac11" "X1gen.ac12" "X1gen.ac13" "X1gen.ac14" ...
$ af :'data.frame': 241 obs. of 4 variables:
..$ X1gen.af1: Factor w/ 3 levels "0","1","2": 1 1 1 1 1 1 1 1 1 1 ...
..$ X1gen.af2: Factor w/ 3 levels "0","1","2": NA NA NA NA NA NA NA NA NA NA ...
..$ X1gen.af3: Factor w/ 3 levels "0","1","2": NA NA NA NA NA NA NA NA NA NA ...
..$ X1gen.af4: Factor w/ 3 levels "0","1","2": NA NA NA NA NA NA NA NA NA NA ...
$ tt :'data.frame': 241 obs. of 4 variables:
..$ X1gen.tt1: Factor w/ 4 levels "0","1","2","3": 3 3 3 3 3 3 3 3 3 3 ...
..$ X1gen.tt2: Factor w/ 4 levels "0","1","2","3": NA NA NA NA NA NA NA NA NA NA ...
..$ X1gen.tt3: Factor w/ 4 levels "0","1","2","3": NA NA NA NA NA NA NA NA NA NA ...
..$ X1gen.tt4: Factor w/ 4 levels "0","1","2","3": NA NA NA NA NA NA NA NA NA NA ...
$ hb :'data.frame': 241 obs. of 4 variables:
..$ X1gen.hb1: num [1:241] 300 50 30 50 70 60 60 50 30 60 ...
..$ X1gen.hb2: num [1:241] NA NA NA NA NA NA NA NA NA NA ...
..$ X1gen.hb3: num [1:241] NA NA NA NA NA NA NA NA NA NA ...
..$ X1gen.hb4: num [1:241] NA NA NA NA NA NA NA NA NA NA ...
$ time: chr [1:241, 1:4] "1" "1" "1" "1" ...
有人可以帮我吗??
谢谢!