0

假设我有两个不同的参数向量用作函数的输入。此外,假设两个参数向量的长度不同。有没有办法输出该函数的所有可能值?我知道如果我使用两个不同长度的参数向量,那么较短的参数向量只会重复,这样就行不通了。我可以“手动”解决这个问题,如下所示。但是,我想找到一种更有效的方式来计算所有可能的组合。一个例子如下:

假设我正在使用 dbinom() 函数,该函数的输入为 x(样本中的“成功”数)、n(样本中的观察数)和 p(每个 x 的“成功”概率)。n 保持在 20 不变;但是,我的 x 从 7,8,9,...,20(下面的“x7”)或 0,1(下面的“x1”)变化。另外,我想在 p 的不同值下评估 dbinom(),特别是从 0 到 1 以 0.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 的新手,所以如果我没有按照惯例提出我的问题,我提前道歉。

4

1 回答 1

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)
于 2013-08-22T00:26:06.867 回答