From de804296565d3699f977f6c58b2e3086a15144dd Mon Sep 17 00:00:00 2001 From: LiangMa Date: Sun, 16 Jun 2019 16:15:45 +0800 Subject: [PATCH] some small bug fix, especially the standard deviation algorithm --- P102_roll_dice.py | 22 ++++++++++++++-------- P38_data_sd_analysis.py | 14 +++++++------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/P102_roll_dice.py b/P102_roll_dice.py index 313f1b9..3aaa450 100644 --- a/P102_roll_dice.py +++ b/P102_roll_dice.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- import random -#import numpy as np +import numpy as np #import pandas as pd from matplotlib import pyplot as plt @@ -11,22 +11,28 @@ def random_dice_roll(): trials_list=[] -std_deviation=0.0 +std_deviation_tmp=0.0 -num_trials=1000 +num_trials=100 for trial in range(num_trials): trials_list.append (random_dice_roll()) avg=sum(trials_list)/float(num_trials) +print ('the trail list is shown as below:\n',trials_list) +print ('the avergae dice roll point = ',avg) + for trial in range(num_trials): - std_deviation+=(trials_list[trial]-avg)**2 + std_deviation_tmp+=(trials_list[trial]-avg)**2 + +std_deviation=(std_deviation_tmp/(num_trials-1))**0.5 + +print ("\nnote: you shall be careful for the stdandard deviation calculation, bias (/n) or non-bias (/n-1)!!") +print ('my calculated stdandard deviation (non-bias,/n-1) = ',std_deviation) +print ('use numpy lib to calculate standard deviation directly (non-bias,/n-1) = ', np.std(trials_list, ddof=1)) -std_deviation=std_deviation/(num_trials-1) -print (trials_list) -print (avg) -print (std_deviation) +# another version, calculate standard deviation for various data list. ''' num_trials=range(100,1000,10) diff --git a/P38_data_sd_analysis.py b/P38_data_sd_analysis.py index 4c065e5..c271832 100644 --- a/P38_data_sd_analysis.py +++ b/P38_data_sd_analysis.py @@ -18,7 +18,7 @@ print ('\n') -sqrt_diff_list=[] +diff_squre_list=[] num_items=len(temperature) product=1. @@ -27,18 +27,18 @@ for temp in temperature: diff=temp-mean_temp - sqrt_diff=diff**2 - sqrt_diff_list.append(sqrt_diff) - average_sqrt_diff=np.mean(sqrt_diff_list) + diff_squre=diff**2 + diff_squre_list.append(diff_squre) + average_diff_squre=np.mean(diff_squre_list) product*=temp -standard_deviation = np.sqrt(average_sqrt_diff) +standard_deviation = np.sqrt(average_diff_squre) geometric_mean = product ** (1./num_items) -print ('Standard Deviation = ',standard_deviation) +print ('Standard Deviation (bias, /n) = ',standard_deviation) print ('Geometric Mean = ',geometric_mean) print ('=======method-2 to calculate standard deviation, using numpy directly =======') -print ('Standard Deviation = ',np.std(temperature)) +print ('Standard Deviation (bias, /n) = ',np.std(temperature))