我试图找出攻击率a
和处理时间h
的参数,以用于为我的消耗猎物密度数据集产生最大可能性。
我在R上使用frair
包来执行此任务,并使用以下函数:
Rogersfit<-frair_fit(eaten~density, data=bob, response='rogersII', start=list(a=x, h=y), fixed=list(T=24))
但是,这需要我手动输入a
和h
的随机值,这需要相当长的时间。如果输入的值不正确,则返回错误消息:
frfunc中的错误(data = moddata,samp = c(1:nrow(moddata)),start = start,: optim中的错误(par = structure(c(1,0),。Name = c(&#34; a&#34;,&#34; h&#34;)),fn = function(p):
函数无法在初始参数下进行评估
为了消除查找初始参数值所涉及的猜测工作,我创建了一个excel表,其中包含R将运行的2列值:
# a h #
# 1 0.01 #
# 1 0.02 #
# 1 0.03 #
# . . #
# . . #
# . . #
# 9 0.98 #
# 9 0.99 #
并使用以下代码输入值:
x <- as.numeric(as.character(test$a))
y <- as.numeric(as.character(test$h))
for (i in 1:900){
for (j in 1:900){
Rogersfit<-frair_fit(eaten~density, data=bob, response='rogersII', start=list(a=x[i], h=y[j]), fixed=list(T=24))
}
}
我已将变量x
分配给我的Excel工作表的第一列,表示攻击率。变量y
已分配给表示处理时间的第二列。
目标是将这些值输入到函数中,直到它根据最大似然拟合返回真实参数,但上面的代码给出相同的错误消息并停在第一组值(1,0.01)中excel表。
我正在考虑使用布尔运算符,例如if response == error
转到下一行值,但我不知道R是否可以这样做,因为我刚开始使用这个语言。