def example_stats(): number_of_experiments = 500 number_of_prisoners = 50 results = monte_carlo(number_of_experiments, number_of_prisoners) #Calculate some statistics: minimum = min(results) maximum = max(results) median = (maximum - minimum)/2.0 + minimum mean = np.mean(results) string = "The simulation with {} results took an average of {} days \ or {} months or {} years to finish." print(string.format(number_of_experiments, mean, mean/12, mean/365.0)) #what's the spread? print "max:", maximum print "min:", minimum #where does the mean fall within that spread? print "mean:", mean print "median:", median print "distance from mean to median:", mean - median #how broad is the peak? standard_deviation = np.std(results) print "standard deviation:", standard_deviation #Plot a histogram histogram_data = plt.hist(results, bins=30) plt.vlines( median, 0, max(histogram_data[0]), linestyles='dashed', lw = 4, label = "median", color='red') plt.vlines( mean, 0, max(histogram_data[0]), linestyles='dashed', lw = 4, label = "mean", color='orange') plt.title("Prisoner Escape Riddle Historgram, n={}".format(number_of_experiments)) plt.xlabel("Number of days to escape") plt.ylabel("Frequency") plt.legend() plt.show()
def example_stats(): number_of_experiments = 500 number_of_prisoners = 50 results = monte_carlo(number_of_experiments, number_of_prisoners) #Calculate some statistics: minimum = min(results) maximum = max(results) median = (maximum - minimum) / 2.0 + minimum mean = np.mean(results) string = "The simulation with {} results took an average of {} days \ or {} months or {} years to finish." print(string.format(number_of_experiments, mean, mean / 12, mean / 365.0)) #what's the spread? print "max:", maximum print "min:", minimum #where does the mean fall within that spread? print "mean:", mean print "median:", median print "distance from mean to median:", mean - median #how broad is the peak? standard_deviation = np.std(results) print "standard deviation:", standard_deviation #Plot a histogram histogram_data = plt.hist(results, bins=30) plt.vlines(median, 0, max(histogram_data[0]), linestyles='dashed', lw=4, label="median", color='red') plt.vlines(mean, 0, max(histogram_data[0]), linestyles='dashed', lw=4, label="mean", color='orange') plt.title("Prisoner Escape Riddle Historgram, n={}".format( number_of_experiments)) plt.xlabel("Number of days to escape") plt.ylabel("Frequency") plt.legend() plt.show()
label = "mean", color='orange') plt.title("Prisoner Escape Riddle Historgram, n={}".format(number_of_experiments)) plt.xlabel("Number of days to escape") plt.ylabel("Frequency") plt.legend() plt.show() #How quickly does the mean converge as number_of_experiments increases? x_values = [] # number_of_experiments y_values = [] # average value at each number_of_experiments number_of_prisoners = 50 for n in range(1,51): print n x_values.append(n) mean = np.mean(monte_carlo(n, number_of_prisoners)) y_values.append(mean) plt.scatter(x_values, y_values) plt.title("Convergence of Mean Value, number_of_prisoners = {}".format(number_of_prisoners)) plt.xlabel("Number of experiments") plt.ylabel("Days to prisoner release") #plt.savefig("convergence.png") def line(slope, intercept, x): a = intercept b = slope y = a + b * x return y slope, intercept, r_value, p_value, std_err = stats.linregress(x_values,y_values) x_line_points = np.arange(1,51,1)
plt.title("Prisoner Escape Riddle Historgram, n={}".format( number_of_experiments)) plt.xlabel("Number of days to escape") plt.ylabel("Frequency") plt.legend() plt.show() #How quickly does the mean converge as number_of_experiments increases? x_values = [] # number_of_experiments y_values = [] # average value at each number_of_experiments number_of_prisoners = 50 for n in range(1, 51): print n x_values.append(n) mean = np.mean(monte_carlo(n, number_of_prisoners)) y_values.append(mean) plt.scatter(x_values, y_values) plt.title("Convergence of Mean Value, number_of_prisoners = {}".format( number_of_prisoners)) plt.xlabel("Number of experiments") plt.ylabel("Days to prisoner release") #plt.savefig("convergence.png") def line(slope, intercept, x): a = intercept b = slope y = a + b * x return y