[R-sig-teaching] Normal Distribution Table

Randall Pruim rpruim at calvin.edu
Mon Feb 23 07:15:04 CET 2015


I’m not a fan of probability tables.  I don’t use trig or log tables when for calculus, why should I use normal probability tables when I teach statistics.

But I am a fan of good R coding and of knitr, and since Arthur wished for an RMarkdown version of his table and I think there are ways to improve the R used to generate the table (note the use of outer(), the avoidance of all loops, and letting the computer calculate sequences), I’ll offer the following RMarkdown file.  It is more complicated than necessary to show how to include a plot and how to control the table format a bit.  A minimalist version with just the table and no custom formatting would be shorter.

Anyway, here goes:


```{r include=FALSE} # execute this code, but don’t put anything into the output
require(xtable)
require(grid)        # for the plot
require(mosaic)      # for the plot
trellis.par.set(theme=theme.mosaic())   # change default colors for plot
big <- seq(0, 3.5, by = 0.1)
little <- seq(0, 0.09, by = 0.01)
norm_table <- outer(big, little, function(x,y) pnorm(x+y))
row.names(norm_table) <- format(big, digits=1)
colnames(norm_table)  <- format(little, digits=2)
```

The table gives values for $P(Z \le z)$ where $z$ is the sum of the left and right headers.

```{r echo=FALSE, fig.width = 7.0, fig.height = 2, fig.keep="last"}
plotDist("norm", groups = x >= 1, type="h")
ladd(grid.text(label=expression(P(Z <= z)), x = .2, y = .7))
```


```{r results="asis", echo=FALSE}
print(
  xtable(
    norm_table,
    digits=4,                          # display 4 digits
    align="|r|rrrrrrrrrr|"             # additional vertical lines
  ),
  hline.after = c(-1, seq(0, nrow(norm_table), by=4)),  # additional horizontal lines
  comment=FALSE)                       # avoid latex comment about table generation
```

On Feb 22, 2015, at 12:02 AM, Arthur Charpentier <arthur.charpentier at gmail.com<mailto:arthur.charpentier at gmail.com>> wrote:

Hi Steven
it might be out of scope but a few months ago, I published some codes to
generate such a table
see http://freakonometrics.hypotheses.org/9404
Arthur



2015-02-21 11:49 GMT+01:00 Steven Stoline <sstoline at gmail.com<mailto:sstoline at gmail.com>>:

One more thing;

3- how to force all output to be in a 4 decimal format. e.g. 1 should look
like 1.0000.

thanks
steve
---------- Forwarded message ----------
From: Steven Stoline <sstoline at gmail.com<mailto:sstoline at gmail.com>>
Date: Sat, Feb 21, 2015 at 5:37 AM
Subject: Normal Distribution Table
To: R-sig-teaching <R-sig-teaching at r-project.org<mailto:R-sig-teaching at r-project.org>>


Dear All:

I am trying to use the below R code to create the standard normal
distribution table. But I need some helps on the output:

1- how I can insert one line-space between each two rows.

2- there is  one "<NA>" in the output, how to remove it from the output.

Simply copy-paste the below code into R.


Here is the Code:
============


columnz<-c(0.00, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09)



rowz<-c(0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,


2.0,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,3.0,3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8,3.9,4.0)


normal.table<-function(columnz,rowz){


m<-length(rowz)

n<-length(columnz)


A<-matrix(NA, nrow = m+1 , ncol = n+1)


for (i in (1:m+1)) {

   A[i,1]<-"   "

}


for (j in (1:n+1)) {

   A[1,j]<-"------"

}


for (i in (1:m)) {
 for (j in (1:n)){

####    A[i,j]<-round(pnorm(rowz[i]+columnz[j]),4)

  A[i+1,j+1]<-round(pnorm(rowz[i]+columnz[j]),4)


 }

}



dimnames(A)<-list(c("  ",
"0.0","0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9",

"1.0","1.1","1.2","1.3","1.4","1.5","1.6","1.7","1.8","1.9",

"2.0","2.1","2.2","2.3","2.4","2.5","2.6","2.7","2.8","2.9",

"3.0","3.1","3.2","3.3","3.4","3.5","3.6","3.7","3.8","3.9","4.0"),
                   c("  ", " 0.00", " 0.01", " 0.02", " 0.03", " 0.04", "
0.05", " 0.06", " 0.07", " 0.08", " 0.09"))

print(A,quote=F)

invisible()

}

normal.table(columnz,rowz)


with many thanks
Steve

--
Steven M. Stoline
1123 Forest Avenue
Portland, ME 04112
sstoline at gmail.com<mailto:sstoline at gmail.com>



--
Steven M. Stoline
1123 Forest Avenue
Portland, ME 04112
sstoline at gmail.com

       [[alternative HTML version deleted]]

_______________________________________________
R-sig-teaching at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-sig-teaching


[[alternative HTML version deleted]]

_______________________________________________
R-sig-teaching at r-project.org<mailto:R-sig-teaching at r-project.org> mailing list
https://stat.ethz.ch/mailman/listinfo/r-sig-teaching


	[[alternative HTML version deleted]]



More information about the R-sig-teaching mailing list