# Example 7.7: Tabulate binomial probabilities

**SAS and R**, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)

Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Suppose we wanted to assess the probability P(X=x) for a binomial random variate with n = 10 and with p = .81, .84, …, .99. This could be helpful, for example, in various game settings.

In SAS, we ﬁnd the probability that X=x using differences in the CDF calculated via the `cdf` function (1.10.1). We loop through the various binomial probabilities and values of x using the `do ... end` structure (section 1.11.1). Finally, we store the probabilities in implicitly named variables via an `array` statement (section 1.11.5).

**SAS**

data table (drop=j); array probs [11] prob0 prob1 - prob10; do p = .81 to .99 by .03; do j = 0 to 10; if j eq 1 then probs[j+1] = cdf("BINOMIAL", 0, p, 10); else probs[j+1] = cdf("BINOMIAL", j, p, 10) - cdf("BINOMIAL", j-1, p, 10); end; output; end; run;

The results are printed with two decimal places using the `format` statement (section 1.2.4). The `options` statement (section A.4) uses the `ls` option to narrow the output width to be compatible with Blogger.

options ls=64; proc print data=table noobs; var p prob0 prob1 - prob10; format _numeric_ 3.2; run;

And the results are:

p p p p p p p p p p p r r r r r r r r r r r o o o o o o o o o o o b b b b b b b b b b b 1 p 0 1 2 3 4 5 6 7 8 9 0 .81 .00 .00 .00 .00 .00 .02 .08 .19 .30 .29 .12 .84 .00 .00 .00 .00 .00 .01 .05 .15 .29 .33 .17 .87 .00 .00 .00 .00 .00 .00 .03 .10 .25 .37 .25 .90 .00 .00 .00 .00 .00 .00 .01 .06 .19 .39 .35 .93 .00 .00 .00 .00 .00 .00 .00 .02 .12 .36 .48 .96 .00 .00 .00 .00 .00 .00 .00 .01 .05 .28 .66 .99 .00 .00 .00 .00 .00 .00 .00 .00 .00 .09 .90

**R**

In R we start by making a vector of the binomial probabilities, using the `:` operator (section 1.11.3) to generate a sequence of integers. After creating a matrix (section B.4.4) to hold the table results, we loop (section 1.11.1) through the binomial probabilities, calling the `dbinom()` function (section 1.1) to ﬁnd the probability that X=x. This calculation is nested within the `round()` function (section 1.2.5) to reduce the digits displayed. Finally, we glue the vector of binomial probabilities to the results.

p

With the result:

p [1,] 0.81 0 0 0 0 0 0.02 0.08 0.19 0.30 0.29 0.12 [2,] 0.84 0 0 0 0 0 0.01 0.05 0.15 0.29 0.33 0.17 [3,] 0.87 0 0 0 0 0 0.00 0.03 0.10 0.25 0.37 0.25 [4,] 0.90 0 0 0 0 0 0.00 0.01 0.06 0.19 0.39 0.35 [5,] 0.93 0 0 0 0 0 0.00 0.00 0.02 0.12 0.36 0.48 [6,] 0.96 0 0 0 0 0 0.00 0.00 0.01 0.05 0.28 0.66 [7,] 0.99 0 0 0 0 0 0.00 0.00 0.00 0.00 0.09 0.90

As with the example of jittered scatterplots for dichotomous y by continuous x, (Example 7.3, Example 7.4, and Example 7.5) we will revisit this example for improvement in later entries.

**leave a comment**for the author, please follow the link and comment on their blog:

**SAS and R**.

R-bloggers.com offers

**daily e-mail updates**about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.

Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.