假设我有两个不同的参数向量用作函数中的输入。此外,假设两个参数矢量具有不同的长度。有没有办法输出该函数的所有可能值?我知道如果我使用两个不同长度的参数向量,那么只重复较短的参数向量,这样就不起作用了。我可以“手动”解决这个问题,如下所示。但是,我想找到一种更有效的计算所有可能组合的方法。一个例子如下:
假设我正在使用dbinom()函数作为输入x(样本中的“成功”数),n(样本中的观察数)和p(每个成功的概率) X)。 n保持不变为20;但是,我的x从7,8,9,...,20(下面的“x7”)或0,1(下面的“x1”)变化。另外,我想在p的不同值处评估dbinom(),特别是从0到1以.1为增量(下面的“p”)。如您所见,三个参数向量x7,x1和p分别具有不同的长度分别为14,2和11。
> p<-seq(from=0,to=1,by=.1)
> x7<-seq.int(7,20)
> x1<-c(0,1)
> n<-20
我可以使用dbinom()中的一个向量(x7 / x2或p)然后为剩余参数选择一个值来评估每个组合。如下所示,我使用向量x7或x2然后“手动”将p更改为等于0,.1,.2,...,1。
> sum(dbinom(x7,n,.1))
[1] 0.002386089
> sum(dbinom(x7,n,.1))+sum(dbinom(x1,n,.1))
[1] 0.3941331
> sum(dbinom(x7,n,.2))+sum(dbinom(x1,n,.2))
[1] 0.1558678
> sum(dbinom(x7,n,.3))+sum(dbinom(x1,n,.3))
[1] 0.3996274
> sum(dbinom(x7,n,.4))+sum(dbinom(x1,n,.4))
[1] 0.7505134
> sum(dbinom(x7,n,.5))+sum(dbinom(x1,n,.5))
[1] 0.9423609
> sum(dbinom(x7,n,.6))+sum(dbinom(x1,n,.6))
[1] 0.9935345
> sum(dbinom(x7,n,.7))+sum(dbinom(x1,n,.7))
[1] 0.999739
> sum(dbinom(x7,n,.8))+sum(dbinom(x1,n,.8))
[1] 0.9999982
> sum(dbinom(x7,n,.9))+sum(dbinom(x1,n,.9))
[1] 1
> sum(dbinom(x7,n,1))+sum(dbinom(x1,n,1))
[1] 1
基本上,我想知道是否有办法让R打印上面的所有总和从0.3941331,0.1558678,...,1用一行输入或其他一些更有效的方法来改变参数p而不是简单地在每一行上复制和更改p。
*我是Stackoverflow的新手,所以如果我没有按照惯例制定我的问题,我会提前道歉。
答案 0 :(得分:1)
您正在使用dbinom
一系列x
值,然后求和。而是使用pbinom
,然后计算P(x <=q)
的概率(或P(x >q)
lower.tail = FALSE
的概率。
因此,您可以计算P(x >6) + P(q <= 1)
(您似乎想要计算的内容)
pbinom(q = 6, p = p ,size = n, lower.tail = FALSE) + pbinom(q = 1, p = p, size = n)