使用mc2d构建树时出错

时间:2012-09-14 19:23:32

标签: r

我正在制作一棵树,最终会变成一组手臂,每条手臂都有一个概率,每条手臂的末端都有一个值。

这是我树的最后一臂(我正在倒退)。

require(mc2d)
ndvar(1000)

sderror_dfail<-(0.30-0.86)/1.96
alpha_dfail<-0.62*{{0.62*{1-0.62}/{sderror_dfail*sderror_dfail}}-1}
beta_dfail<-alpha_dfail*{{1-0.62}/0.62}

probs_d_if_fail<-mcstoc(rbetagen,type="V",shape1=alpha_dfail, shape2=beta_dfail, 
min=0, max=1)

lots1<-mcdata(1)
test<-lots1-probs_d_if_fail

probs1 <- mcstoc(rempiricalD, values=1:2, type="V", prob= c(probs_d_if_fail,test))

下一步是按如下方式构建树的分支:

node1 <- mcprobtree(probs1, list("1"=mcdata(0), "2"=mcdata(1), type="V")

然而,当我运行它时,行probs1&lt; - mcstoc(....)会给我以下错误

Error in function (n, values, prob = NULL)  : 
Prob and values should be of same length or have the same number of columns.

我觉得它不喜欢我使用mcstoc对象作为prob = c(probs_d_if_fail,test)等式的一部分,但我不知道如何解决这个问题。

非常感谢任何帮助。

蒂莫西

1 个答案:

答案 0 :(得分:2)

rempiricalD需要一个多变量mcnode作为prob参数。这很棘手。

尝试:

require(mc2d)
ndvar(10000)

sderror_dfail<-(0.30-0.86)/1.96
alpha_dfail<-0.62*{{0.62*{1-0.62}/{sderror_dfail*sderror_dfail}}-1}
beta_dfail<-alpha_dfail*{{1-0.62}/0.62}

probs_d_if_fail<-mcstoc(rbetagen,type="V",shape1=alpha_dfail, shape2=beta_dfail, 
min=0, max=1)

lots1<-mcdata(1)
test<-lots1-probs_d_if_fail
probs <- mcdata(c(probs_d_if_fail,test),type="V",nvariates=2)
probs1 <- mcstoc(rempiricalD, values=1:2, type="V", prob= probs)

node1 <- mcprobtree(probs1, list("1"=mcdata(0), "2"=mcdata(1)), type="V")
node1

但如果符合您的需要,以下代码可能更简单:

require(mc2d)
ndvar(10000)

sderror_dfail<-(0.30-0.86)/1.96
alpha_dfail<-0.62*{{0.62*{1-0.62}/{sderror_dfail*sderror_dfail}}-1}
beta_dfail<-alpha_dfail*{{1-0.62}/0.62}

probs_d_if_fail<-mcstoc(rbeta,type="V",shape1=alpha_dfail,
shape2=beta_dfail)

node1 <- mcstoc(rbern, type="V",prob = 1-probs_d_if_fail)
node1

请注意rbern将提供1概率(1-probs_d_if_fail),如果我理解的话,您需要。

RP