Modify find_grade_gain.py

This commit is contained in:
Andreas Tsouchlos 2025-09-28 16:03:26 +02:00
parent 601975d370
commit 90c0cc7b14

View File

@ -1,6 +1,7 @@
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
from scipy import stats from scipy import stats
import numpy as np import numpy as np
import argparse
def main(): def main():
@ -13,10 +14,31 @@ def main():
hours_studied = np.array([1, 2.5, 3.5, 4.5, 5.5, 6.5]) hours_studied = np.array([1, 2.5, 3.5, 4.5, 5.5, 6.5])
gpa = np.array([2.94, 2.91, 2.97, 2.86, 3.25, 3.18]) gpa = np.array([2.94, 2.91, 2.97, 2.86, 3.25, 3.18])
# Parse command line arguments
parser = argparse.ArgumentParser()
parser.add_argument("--plot", action="store_true")
args = parser.parse_args()
# Compute Spearman rank order correlation
corr, p = stats.spearmanr(hours_studied, gpa)
print("======== Spearman rank order correlation ========")
print(f"Correlation: {corr}")
print(f"p-value: {p}")
# Perform linear regression
slope, intercept, r, p, std_err = stats.linregress(hours_studied, gpa) slope, intercept, r, p, std_err = stats.linregress(hours_studied, gpa)
print(f"GPA/hour (slope) of best fit line: {slope}") print("======== Linear regression ========")
print(f"slope: {slope:.8f} points/hour = {slope / (60 * 60):.8f} points/second")
# Printing the p-value here doesn't make much sense, because we don't know
# whether the assumptions for the test are satisfied
if args.plot:
plt.plot(hours_studied, gpa, label="Plot from publication") plt.plot(hours_studied, gpa, label="Plot from publication")
plt.plot(hours_studied, slope * hours_studied + intercept, label="Best fit") plt.plot(hours_studied, slope * hours_studied + intercept, label="Best fit")
plt.xlabel("Hours studied") plt.xlabel("Hours studied")