What’s New ?

The Top 10 favtutor Features You Might Have Overlooked

Read More

Calculate P-Value from Z-Score in R (With Code Examples)

  • Feb 01, 2024
  • 6 Minutes Read
  • Why Trust Us
    We uphold a strict editorial policy that emphasizes factual accuracy, relevance, and impartiality. Our content is crafted by top technical writers with deep knowledge in the fields of computer science and data science, ensuring each piece is meticulously reviewed by a team of seasoned editors to guarantee compliance with the highest standards in educational content creation and publishing.
  • By Abhisek Ganguly
Calculate P-Value from Z-Score in R (With Code Examples)

Statistical analysis is an important tool for making data-driven decisions and conducting scientific research. Knowing how significant our findings are is an important aspect of any statistical analysis. The p-value is an important metric in statistical hypothesis testing because it expresses the likelihood of seeing results as extreme as those observed under the assumption that the null hypothesis is correct. In this article, we will look at p-values and how to calculate them using the Z-score in R programming. 

Understanding Z-Scores and Normal Distribution

Let us start with establishing a foundation by understanding what Z-Score and the normal distribution are, after that, we can go by calculating p-values. In statistics, the Z-score indicates how many data points have deviated from their mean distribution. Z-scores are specifically useful to compare values from different normal distributions. 

The bell curve, or normal distribution, is a symmetrical probability distribution that is identified by its standard deviation (σ) and mean (μ). The mean and standard deviation of a standard normal distribution are both equal to 1. The formula used to determine the Z-score for each data point in a standard normal distribution is as follows:

Z = (X - μ) / σ

Here, X is the individual data point, μ is the mean and σ is the standard deviation.

Calculating p-Value from Z-Score in R

?R provides us with various statistical analysis functions, including the ones for calculating p-values from the Z-scores. ??Below is a step-by-step guide to using the pnorm() function to calculate the CDF of the standard normal distribution. ?


z_score <- 2.5 #Assumed Value

p_value <- pnorm(z_score)

cat("The p-value for a Z-score of", z_score, "is", p_value, "\n")



The p-value for a Z-score of 2.5 is 0.9937903 


Here, the pnorm() function is used to calculate the probability that a standard normal random variable is less than or equal to the defined Z-score. ??The p-value in our output represents the probability of coming across a value as extreme as the Z-score under the null hypothesis. ?

Calculating p-Value from t-Statistic in R

Z-scores are used when the sample size is large or the population standard deviation is known, whereas t-scores are used when the sample size is small and the population standard deviation is unknown. The t-statistic indicates the number of standard errors by which a data point deviates from the mean. 

To calculate the p-value from a t-statistic in R, you can use the pt() function, which calculates the CDF of the t-distribution.


t_statistic <- 2.0
degrees_of_freedom <- 10

p_value_t <- pt(t_statistic, df = degrees_of_freedom)

cat("The p-value for a t-statistic of", t_statistic, "with", degrees_of_freedom, "degrees of freedom is", p_value_t, "\n")



The p-value for a t-statistic of 2 with 10 degrees of freedom is 0.963306 


Here, the probability of observing a t-value less than or equal to the supplied t-statistic is returned by the pt() function, which accepts the degrees of freedom and the t-statistic as inputs.

Understanding p-Values in Regression Analysis in R

P-values are essential for assessing the significance of the model as a whole and the predictors in regression analysis. All the p-values help evaluate the null hypothesis, which states that the coefficients have no effect and are equal to zero. We reject the null hypothesis if the p-value is less than the chosen significance level, which is usually 0.05.

Let's now explore how to calculate p-values in regression analysis using R. We'll use the lm() function to fit a linear regression model and the summary() function to extract relevant information from the model, including the p-values.


x <- rnorm(100)
y <- 2 * x + rnorm(100)

model <- lm(y ~ x)




lm(formula = y ~ x)

    Min      1Q  Median      3Q     Max 
-1.9073 -0.6835 -0.0875  0.5806  3.2904 

            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.10280    0.09755  -1.054    0.295    
x            1.94753    0.10688  18.222   <2e-16 ***
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.9707 on 98 degrees of freedom
Multiple R-squared:  0.7721,	Adjusted R-squared:  0.7698 
F-statistic:   332 on 1 and 98 DF,  p-value: < 2.2e-16


With a known relationship between x and y, we build a basic linear regression model in this example. The summary() function offers comprehensive data, including coefficients, standard errors, t-values, and p-values, while the lm() function fits the model.

Pay close attention to the "Pr(>|t|)" column in the "Coefficients" section when interpreting the output. The p-values for each coefficient are shown in this column. The null hypothesis for that coefficient can be rejected if the p-value is less than the selected significance level (e.g., 0.05).


In conclusion, becoming proficient in p-value calculation from Z-scores in R programming provides access to a more thorough understanding of statistical significance. When you understand how to interpret p-values from Z-scores and t-statistics and apply them to regression analysis, you will make more educated decisions about the quality of their data. These calculations are made easier by R's flexible functions, including pnorm(), pt(), and the integrated regression tools. P-values must, however, be viewed as instruments within a larger analytical framework that takes context, significance levels, and potential errors into account.


FavTutor - 24x7 Live Coding Help from Expert Tutors!

About The Author
Abhisek Ganguly
Passionate machine learning enthusiast with a deep love for computer science, dedicated to pushing the boundaries of AI through academic research and sharing knowledge through teaching.