import matplotlib.pyplot as plt from scipy import stats import numpy as np def main(): """ [1] H. Schuman, E. Walsh, C. Olson, and B. Etheridge, “Effort and Reward: The Assumption that College Grades Are Affected by Quantity of Study*,” Social Forces, vol. 63, no. 4, pp. 945–966, June 1985. """ # [1, p. 950] 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]) slope, intercept, r, p, std_err = stats.linregress(hours_studied, gpa) print(f"GPA/hour (slope) of best fit line: {slope}") plt.plot(hours_studied, gpa, label="Plot from publication") plt.plot(hours_studied, slope * hours_studied + intercept, label="Best fit") plt.xlabel("Hours studied") plt.ylabel("GPA") plt.legend() plt.show() if __name__ == "__main__": main()