Skip to main content
v2026.11,858 entries · CC-BY 4.0

Inverse Normal Distribution: Formula, Worked Example and Software

The inverse normal turns a probability into a value. See the formula, a worked example, tail conventions and Excel, R and Python code.

Written and maintained by CASRAI Editorial Board

Last updated

The inverse normal distribution answers one question: given a probability, which value of a normally distributed variable has that much probability at or below it? Software computes it with NORM.INV and NORM.S.INV in Excel, qnorm in R and norm.ppf in Python. Calculators call it “inverse norm”. All of them are the same operation: the inverse of the normal cumulative distribution function.

What the inverse normal distribution is

The normal cumulative distribution function (CDF) takes a value x and returns the probability of observing a value at or below x. The inverse normal runs that map backwards: you supply the probability p and get back the value x. In R’s documentation, qnorm is “the quantile function of the normal distribution”; SciPy calls the same thing the percent point function (ppf), “the inverse of cdf – percentiles”. Microsoft describes NORM.INV as returning “the inverse of the normal cumulative distribution for the specified mean and standard deviation”.

It is the machinery behind percentiles and quantiles of a normal variable: the 90th percentile is simply the inverse normal at p = 0.90. Printed tables for critical values are a lookup of the same function (see how to find a critical value); this page covers the function itself and how to run it in software. For the specific zα values used in hypothesis tests, see z-alpha.

Formula and symbols

If X follows a normal distribution with mean μ and standard deviation σ, and Φ is the CDF of the standard normal distribution (mean 0, standard deviation 1), then:

  • CDF: p = P(X ≤ x) = Φ((x − μ) / σ)
  • Inverse: x = μ + σ × Φ−1(p)
  • p: the cumulative probability, strictly between 0 and 1.
  • Φ−1(p): the standard normal quantile (the z value) for p, often written zp.
  • μ: the mean of the variable.
  • σ: the standard deviation of the variable, which must be greater than zero.
  • x: the value you are solving for.

The NIST/SEMATECH e-Handbook notes that “the formula for the percent point function of the normal distribution does not exist in a simple closed formula” and that it “is computed numerically”. Excel’s NORM.S.INV likewise “uses an iterative search technique”, and R’s qnorm is based on Wichura’s (1988) algorithm AS 241, giving “precise results up to about 16 digits”. In practice you never evaluate Φ−1 by hand; you call a function or read a z table backwards.

Worked example with the arithmetic shown

Exam scores are approximately normal with mean μ = 70 and standard deviation σ = 8. What score marks the 90th percentile?

  1. The cumulative probability is p = 0.90.
  2. The standard normal quantile is Φ−1(0.90) = 1.2816 (rounded to four decimals).
  3. Convert to the score scale: x = μ + σ × z = 70 + 8 × 1.2816 = 70 + 10.2528 = 80.25.

Check by going forward: the standardized value is (80.25 − 70) / 8 = 1.28, and the normal CDF at 1.28 is about 0.90, so 90% of scores fall at or below 80.25. The lower tail works the same way: p = 0.10 gives z = −1.2816 and x = 70 − 10.2528 = 59.75.

Microsoft’s own example for NORM.INV uses probability 0.908789, mean 40 and standard deviation 1.5, and returns 42.000002, which the page treats as 42. Check: z = (42 − 40) / 1.5 = 1.3333, and NORM.S.INV(0.908789) returns 1.3333347 on the standard scale.

Reading the result

The table gives standard normal quantiles for common lower-tail probabilities (computed values, rounded to four decimals). To use them for any normal variable, apply x = μ + σ × z.

Lower-tail probability p z = Φ−1(p) What it means
0.025 −1.9600 2.5% of values lie below this point
0.05 −1.6449 5% lie below
0.10 −1.2816 10% lie below
0.50 0.0000 the median, equal to the mean for a normal distribution
0.90 1.2816 90% lie below
0.95 1.6449 95% lie below
0.975 1.9600 97.5% lie below

Because the normal curve is symmetric, Φ−1(1 − p) = −Φ−1(p). The result is a value on the variable’s own scale (a score, a height, a concentration), or on the z scale when the mean is 0 and the standard deviation is 1. A negative z lies below the mean, a positive z above it; see z-scores for the forward direction.

Lower tail versus upper tail

The default in every tool below is the lower tail: probability to the left of x. If you know the area to the right (a p-value or an exceedance probability), convert it first.

Tool Lower tail (default) Upper tail
Excel =NORM.INV(p, mean, sd) =NORM.INV(1-p, mean, sd)
R qnorm(p, mean, sd) qnorm(p, mean, sd, lower.tail = FALSE)
Python (SciPy) norm.ppf(p, loc, scale) norm.isf(p, loc, scale)

In R, lower.tail TRUE (the default) means probabilities are P[X ≤ x], otherwise P[X > x]. SciPy’s isf is the “inverse survival function”, the upper-tail counterpart of ppf.

Assumptions and common mistakes

  • The variable must be approximately normal. The inverse normal tells you about a normal model, not about your data. Check the fit first, for example with a Q-Q plot.
  • p cannot be 0 or 1. Excel returns #NUM! when probability is less than or equal to 0 or greater than or equal to 1, and also when the standard deviation is less than or equal to 0. Nonnumeric input returns #VALUE!.
  • Mixing up tails. Feeding a right-tail probability into a lower-tail function gives a value on the wrong side of the mean. Use 1 − p, lower.tail = FALSE or isf.
  • Confusing p with a percentage. Enter 0.95, not 95.
  • Using the standard function with a non-standard variable. NORM.S.INV returns z; you must still apply x = μ + σz. NORM.INV with mean 0 and standard deviation 1 uses the standard normal distribution and gives the same z.
  • Expecting exact arithmetic. Microsoft notes that the precision of NORM.INV depends on the precision of NORM.DIST, which is why its documented example returns 42.000002 rather than exactly 42.

How to report it (APA example)

State the model, its parameters, the probability and the result, rounded consistently. For the worked example:

Assuming normally distributed exam scores (M = 70, SD = 8), the 90th percentile was 80.25, obtained as the inverse of the normal cumulative distribution at p = .90 (z = 1.28).

Name the software and version you used if the number feeds into a reported analysis, and say which tail you used when the probability is not a lower-tail one.

How to calculate it in Excel, R or Python

Excel

=NORM.INV(0.9, 70, 8)    // 80.25
=NORM.S.INV(0.9)         // 1.2816 (standard normal z)

Syntax: NORM.INV(probability, mean, standard_dev), all three required. NORM.S.INV(probability) takes only the probability.

R

qnorm(0.9, mean = 70, sd = 8)   # 80.25241
qnorm(0.9)                      # 1.281552

Python

from scipy.stats import norm
norm.ppf(0.9, loc=70, scale=8)   # 80.25241
norm.ppf(0.9)                    # 1.2815515655446004

In SciPy, loc and scale are the mean and standard deviation; passing them is equivalent to standardizing with y = (x − loc) / scale. Graphing calculators offer the same function, usually labelled “invNorm”; check the manual for the order of its arguments.

Frequently asked questions

What is the difference between NORM.INV and NORM.S.INV?

NORM.INV takes a mean and standard deviation and returns a value on the variable’s own scale. NORM.S.INV assumes mean 0 and standard deviation 1 and returns a z value.

Is the inverse normal the same as the percent point function or quantile function?

Yes. R calls it the quantile function (qnorm) and SciPy calls it the percent point function (ppf); both invert the normal CDF.

Why is there no simple formula for the inverse normal?

The NIST/SEMATECH e-Handbook states that the percent point function of the normal distribution has no simple closed formula, so software computes it numerically.

What happens if I enter a probability of 0 or 1?

In Excel the result is #NUM!, because the function requires a probability strictly between 0 and 1.

How do I get a value from an upper-tail probability?

Use 1 − p with the default function, or set lower.tail = FALSE in R, or use isf in SciPy.

For the full normal model, including the forward direction, see the normal and standard normal distribution.

Sources

Follow CASRAI

Research-administration guidance, standards updates and independent tool reviews.

Ask CASRAI · free to try

Ask about Inverse Normal Distribution: Formula, Worked Example and Software

Ask your first 2 questions free below. Subscribers get 150 a day for $29 a month.

An AI assistant specialized in research administration. It cites the sources behind every answer, labels web answers and says when it can't answer.

Answers draw on CASRAI's guides and dictionary plus the federal and funder documents we index: Federal Register, Grants.gov, Regulations.gov and UKRI.

Works on this site and inside Claude, Cursor and the AI tools you already use.

Everything CASRAI publishes — this page, the dictionary, the guides and the news — stays free to read, with no account and no card.

Referenced across the research world

University of Cambridge logoColumbia University logoCrossref logoUniversity of Edinburgh logoHarvard University logoUniversity of Oxford logoPrinceton University logoStanford School of Medicine logoUniversity College London logoORCID logoUniversity of Cambridge logoColumbia University logoCrossref logoUniversity of Edinburgh logoHarvard University logoUniversity of Oxford logoPrinceton University logoStanford School of Medicine logoUniversity College London logoORCID logo
  • University of Cambridge logo
  • Columbia University logo
  • Crossref logo
  • University of Edinburgh logo
  • Harvard University logo
  • University of Oxford logo
  • Princeton University logo
  • Stanford School of Medicine logo
  • University College London logo
  • ORCID logo

View CASRAI adoption →

Ask CASRAI · Regulatory Radar

Research-admin question? Get an answer that links its sources.

An AI assistant specialized in research administration. Every answer links its sources to check before you act. 2 questions free, no account. $29/month after.

  • Answers draw on CASRAI's guides and dictionary plus the federal and funder documents we index: Federal Register, Grants.gov, Regulations.gov and UKRI.
  • Every answer numbers its sources and links each one, so you can check the source yourself.