[R] generate multiple probability distributions

Duncan Murdoch murdoch.duncan at gmail.com
Mon Dec 2 16:12:36 CET 2013


On 02/12/2013 9:47 AM, Michael Friendly wrote:
> I want to generate a collection of probability distributions in a data
> frame, with
> varying parameters.  There must be some simpler way than what I have below
> (avoiding rbind and cbind), but I can't quite see it.
>
> x <- seq(0,12)
> bin.df <- as.data.frame(
>       rbind( cbind(x, prob=dbinom(x,12,1/6), p=1/6),
>              cbind(x, prob=dbinom(x,12,1/3), p=1/3),
>              cbind(x, prob=dbinom(x,12,1/2), p=1/2),
>              cbind(x, prob=dbinom(x,12,2/3), p=2/3)
>             ))
> bin.df$p <- factor(bin.df$p, labels=c("1/6", "1/3", "1/2", "2/3"))
> str(bin.df)
>
>   > str(bin.df)
> 'data.frame':   52 obs. of  3 variables:
>    $ x   : num  0 1 2 3 4 5 6 7 8 9 ...
>    $ prob: num  0.1122 0.2692 0.2961 0.1974 0.0888 ...
>    $ p   : Factor w/ 4 levels "1/6","1/3","1/2",..: 1 1 1 1 1 1 1 1 1 1 ...
>   >
>

dbinom can take vector inputs for the parameters, so this would be a bit 
simpler:

x <- seq(0,12)
x <- rep(x, 4)
p <- rep(c(1/6, 1/3, 1/2, 2/3), each=13)
bin.df <- data.frame(x, prob = dbinom(x, 12, p), p)

Duncan Murdoch



More information about the R-help mailing list