View the original community article here

*Last tested: Jan 21, 2019*

According to the R documentation (from inputting >?pnorm in R Studio), pnorm can take up to 5 arguments. This takes a Z-score value *q* and outputs a probability or *p-value*.`pnorm(q, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE)`

The related function in Looker's Table Calculations is `norm_dist()`

which is described as: `norm_dist(value, mean, stdev, cumulative)`

Returns the position of value on the normal distribution with the given mean and stdev. If cumulative = yes, then returns the cumulative probability"

Translating this to R language (with the exception of the log.p functionality, which could be achieved by taking the log of the resulting p-value in Looker) `value = q`

`mean = mean`

`stdev = sd`

`cumulative = lower.tail`

If cumulative is "yes" or lower.tail is "TRUE" then our p-value is P[X<=x].

To give an example, we get the following in R:`> pnorm(2, 0, 1)`

`[1] 0.9772499`

Which is similarly achieved in Looker using:`norm_dist(2,0,1, yes)`

which gives us `0.977249868`

in the calculation column.

The equivalent to qnorm is the `norm_s_inv()`

function in Table Calculations. Like qnorm, we can input a lower-tail *p-value* into `norm_s_inv()`

and receive the Z-score for that *p-value*. It is worth noting that qnorm in R can take up to 5 arguments, like pnorm. In Looker, `norm_s_inv()`

only takes a single *p-value*, nothing else.

in R:`> qnorm(0.025)`

`[1] -1.959964`

in Looker: `norm_s_inv(0.025)`

which gives us`-1.95996398`

in the calculation column.

*This content is subject to *__ limited support__.