我正在尝试使用如下的长度 - 重量关系式来估计鱼的重量。
W = aL ^ b,其中 W =重量,L =长度和' a' &安培; ' B'是估计的常数。
我可以从FishBase网站获取a和b的值,他们在这两个常数中表示95%有信心的上下值。
例如,一个特定的物种就有这个。
来自FishBase:贝叶斯长度权重:a = 0.01349(0.01106 - 0.01645),b = 2.95(2.89 - 3.01)
我知道我可以分别运行三个值(即平均值,低值和高度)组合的公式,并绘制以显示重量估计的可变性。
然而,我更感兴趣的是预测当两个边界之间的平均变化时预期的权重。基本上我希望R在从上面的等式估计权重值时为边界内的两个常数选择随机值。这可能是R还是我陷入了死胡同?
a <- data.frame (mean=0.01349, min = 0.01106, max = 0.01645)
b <- data.frame (mean=2.95, min = 2.89, max = 3.01)
FishLength <- data.frame(Length = c(35,40,65,36,49))
FishLength$W_est <- (a$mean)*FishLength$Length^b$mean
FishLength$W_min <- (a$min)*FishLength$Length^b$min
FishLength$W_max <- (a$max)*FishLength$Length^b$max
以上是为了达到不同的估计而我会跑的,但我对此并不满意,并且想要在估算体重时考虑可变性。
答案 0 :(得分:0)
你可以写一个函数
下面的函数的参数len
是拳头的长度,a
和b
cofficients。该函数随机选择2个边界之间的系数值并计算权重
calc <- function(len, a = list(min = 0.01166, max = 0.01645), b = list(min = 2.89, max = 3.01)){
weigh = runif(1, a[[1]], a[[2]]) * len^runif(1, b[[1]], b[[2]])
return(weigh)
}
calc(10)
返回长度为10的重量 你可以在数字上得到结果
plot(x = c(0, 20), y = c(0, 100), type = "n")
curve(0.01166*x^2.89, 0, 20, add = T)
curve(0.01645*x^3.01, 0, 20, add = T)
curve(0.01349*x^2.95, 0, 20, add = T, lty = 2)