来自已知均值和sd的变量预测

时间:2017-03-22 05:35:32

标签: r

我正在尝试使用如下的长度 - 重量关系式来估计鱼的重量。

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

以上是为了达到不同的估计而我会跑的,但我对此并不满意,并且想要在估算体重时考虑可变性。

1 个答案:

答案 0 :(得分:0)

你可以写一个函数 下面的函数的参数len是拳头的长度,ab 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)

enter image description here