PracHub
QuestionsLearningGuidesInterview Prep

Quick Overview

This question evaluates proficiency in statistical hypothesis testing, p-value interpretation, and implementing distribution-based calculations (Z and Student-t) in code, and it falls under the Coding & Algorithms domain for data scientist roles.

  • medium
  • Roblox
  • Coding & Algorithms
  • Data Scientist

Implement Python Function for Statistical Test P-Values

Company: Roblox

Role: Data Scientist

Category: Coding & Algorithms

Difficulty: medium

Interview Round: Technical Screen

##### Scenario You need a utility that calculates p-values for one-sided and two-sided statistical tests. ##### Question Write a Python function `compute_p_value(stat, dist='z', df=None, alternative='two-sided')` that returns the p-value. Your code should support Z-tests and Student-t tests, and handle 'less', 'greater', and 'two-sided' alternatives. ##### Hints Use the CDF of the chosen distribution; for two-sided tests return 2*min(CDF, 1-CDF). Libraries like scipy.stats are allowed.

Quick Answer: This question evaluates proficiency in statistical hypothesis testing, p-value interpretation, and implementing distribution-based calculations (Z and Student-t) in code, and it falls under the Coding & Algorithms domain for data scientist roles.

Implement compute_p_value(stat, dist='z', df=None, alternative='two-sided') that returns the p-value for one-sided and two-sided tests. For dist='z', use the standard normal distribution. For dist='t', use the Student's t distribution with degrees of freedom df (a positive integer). The alternative can be 'less', 'greater', or 'two-sided'. Compute p-values using the CDF of the chosen distribution: for 'less' return CDF(stat); for 'greater' return 1 - CDF(stat); for 'two-sided' return 2 * min(CDF(stat), 1 - CDF(stat)). Do not use external libraries. Return a float in [0, 1].

Constraints

  • dist is 'z' or 't'
  • alternative is 'less', 'greater', or 'two-sided'
  • For dist='t', df is a positive integer (1 <= df <= 10^6)
  • stat is a finite float (|stat| <= 1e6)
  • Use only the Python standard library
  • Return value within absolute error 1e-9 of the true p-value

Examples

Input:

Expected Output: 1.0

Input:

Expected Output: 0.75

Hints

  1. For the normal CDF, use erf: Phi(z) = 0.5 * (1 + erf(z / sqrt(2))).
  2. For the t-distribution CDF, use the regularized incomplete beta function: if t >= 0, F(t) = 1 - 0.5 * I_{nu/(nu + t^2)}(nu/2, 1/2); else F(t) = 0.5 * I_{nu/(nu + t^2)}(nu/2, 1/2).
  3. Compute the regularized incomplete beta via a continued fraction (Lentz's method).
  4. For two-sided tests, use 2 * min(CDF, 1 - CDF) and clamp results to [0,1].
Last updated: Mar 29, 2026

Loading coding console...

PracHub

Master your tech interviews with 9,000+ real questions from top companies.

Product

  • Questions
  • Learning Tracks
  • Interview Guides
  • Resources
  • Premium
  • For Universities

Browse

  • By Company
  • By Role
  • By Category
  • Topic Hubs
  • SQL Questions
  • AI Coding Questions
  • Compare Platforms
  • Discord Community

Support

  • support@prachub.com
  • (916) 541-4762

Legal

  • Privacy Policy
  • Terms of Service
  • About Us

© 2026 PracHub. All rights reserved.

Related Coding Questions

  • Level-Ordered Dependency Build Order - Roblox (medium)
  • Most Frequent Call Stack from Profiler Samples - Roblox (medium)
  • Find Windows Containing a Target - Roblox (medium)
  • Implement Sliding-Window Rate Limiter - Roblox (medium)
  • Find target-heavy sliding windows - Roblox (medium)