我有以下图表:
我被告知以下信息:
(1)顶点A到顶点X由λ=4的指数分布描述;
(2)顶点A到顶点Y用λ=2.5的指数分布描述;
(3) 顶点X到顶点Y与顶点Y到顶点X相同,并且用λ=10的指数分布描述;
(4) 顶点X到顶点B由λ=3的指数分布描述;最后,
(5) 顶点 Y 到顶点 B 由 lambda = 5 的指数分布描述。
让我们假设每次模拟我都在顶点之间走最快的路径。
我现在想知道从顶点 A 到顶点 B 所需的平均时间。
我的R代码如下:
# Generate/simulate 1000 random numbers for each of the internode paths.
AtoX <- rexp(1000, 4)
AtoY <- rexp(1000, 2.5)
XtoY <- rexp(1000, 10)
XtoB <- rexp(1000, 3)
YtoB <- rexp(1000, 5)
# Length of path from A to X to Y and A to Y to X.
AYX = AtoY + XtoY
AXY = AtoX + XtoY
# Total time of paths from A to B.
AXB = AtoX + XtoB
AYB = AtoY + YtoB
AXYB = AtoX + XtoY + YtoB
AYXB = AtoY + XtoY + XtoB
# Taking the fastest path of all paths.
minAXB = min(AXB)
minAYB = min(AYB)
minAXYB = min(AXYB)
minAYXB = min(AYXB)
# Taking an average of the fastest paths.
averageTravelTime =
mean(minAXB + minAYB + minAXYB + minAYXB)
这看起来正确吗?如果人们可以花时间查看我的代码以解决此问题,我将不胜感激。
最佳答案
AYX <- AtoY + XtoY
AXY <- AtoX + XtoY
所以它们是多余的。
minAXB <- min(AXB)
没有任何意义。您为每条边模拟 1000 次旅行时间,AXB
是路线 AXB
1000 次的向量,现在您选择的是整个时间最短的一次。 averageTravelTime
没有意义,因为 minAXB + minAYB + minAXYB + minAYXB
只是一个数字,而不是一个向量。 因此,我认为代码应该是
set.seed(1)
AtoX <- rexp(1000, 4)
AtoY <- rexp(1000, 2.5)
XtoY <- rexp(1000, 10)
YtoX <- rexp(1000, 10) # added
XtoB <- rexp(1000, 3)
YtoB <- rexp(1000, 5)
AXB <- AtoX + XtoB
AYB <- AtoY + YtoB
AXYB <- AtoX + XtoY + YtoB
AYXB <- AtoY + YtoX + XtoB # changed XtoY to YtoX
TravelTimes <- pmin(AXB, AYB, AXYB, AYXB)
averageTravelTime <- mean(TravelTimes)
请参阅
?pmin
。对于每一天,它选择最快的旅行时间并返回一个长度为 1000 的向量。作为奖励,以下显示了哪条路线最快的次数
table(apply(cbind(AXB, AYB, AXYB, AYXB), 1, which.min))
# 1 2 3 4
# 317 370 240 73
关于r - R中的指数分布模拟,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49382539/