import numpy as np
from scipy import stats
mean(aritmetic mea,average) = sum of numbers / nr of numbers
median = middle number (or mean of two at the middle)
mode = most common (frequent number)
median and mode are useful ehen aritmetic mean is skewed by the unbalanced distribution of numbers
data = np.array([1,1,3,4,6,7])
print(f"mean = {np.mean(data)}\nmedian = {np.median(data)}\nmode = {stats.mode(data)}")
print("median = ",np.percentile(data, [50]))
mean = 3.6666666666666665 median = 3.5 mode = ModeResult(mode=array([1]), count=array([2])) median = [3.5]
stats.mode([2,2,2,3,3,3,4,4,4])
ModeResult(mode=array([2]), count=array([3]))
IQR(inter quartile range) =
difference between middle of 1st half of data and middle of 2nd half of data
data = np.array([4,4,6,7,10,11,12,14,15])
# |__________|___________|
#‘midpoint’: (i + j) / 2.
q75, q25 = np.percentile(data,[75,25],interpolation="midpoint")
iqr = q75 - q25
print(f"iqr = {q75} - {q25} = {iqr}")
#default interpolation='linear': i + (j - i) * fraction,
#where fraction is the fractional part of the index surrounded by i and j.
q75, q25 = np.percentile(data, [75 ,25])
iqr = q75 - q25
print(f"iqr = {q75} - {q25} = {iqr}")
print("iqr = ",stats.iqr(data))
iqr = 12.0 - 6.0 = 6.0 iqr = 12.0 - 6.0 = 6.0 iqr = 6.0
np.percentile([0,1,100], [25,75])
array([ 0.5, 50.5])
#7,9,9,10,10,10,11,12,12,14
# -----
#|__________||____________|
data = [7,9,9,10,10,10,11,12,12,14]
#‘midpoint’: (i + j) / 2.
q75, q25 = np.percentile(data,[75,25],interpolation="midpoint")
iqr = q75 - q25
print(f"iqr = {q75} - {q25} = {iqr}")
#default interpolation='linear': i + (j - i) * fraction,
#where fraction is the fractional part of the index surrounded by i and j.
q75, q25 = np.percentile(data,[75,25])
iqr = q75 - q25
print(f"iqr = {q75} - {q25} = {iqr}")
print("iqr = ",stats.iqr(data))
iqr = 11.5 - 9.5 = 2.0 iqr = 11.75 - 9.25 = 2.5 iqr = 2.5
data1 = np.array([-10,0,10,20,30])
data2 = np.array([8,9,10,11,12])
print("mean data1:",np.mean(data1))
print("mean data2:",np.mean(data2))
print("range data1:",np.ptp(data1))
print("range data2:",np.ptp(data2))
mean data1: 10.0 mean data2: 10.0 range data1: 40 range data2: 4
Population variance = $\sigma^2$
$\sigma^2 = \frac{1}{N}\sum_{i=1}^n(x_{i}-\mu)^2$, where $\mu $ - the population mean and N - the number of data points
Standard Deviation = $\sqrt{variance}=\sigma$
variance1 = np.mean((data1-np.mean(data1))**2)
print(variance1)
200.0
variance1 = np.mean(np.power((data1-np.mean(data1)),2))
print(variance1)
200.0
variance1 = np.var(data1)
print(variance1)
200.0
std1 = np.sqrt(variance1)
print(std1)
14.142135623730951
std1 = np.std(data1)
print(std1)
14.142135623730951
variance2 = np.mean((data2-np.mean(data2))**2)
print(variance2)
2.0
variance2 = np.mean(np.power((data2-np.mean(data2)),2))
print(variance2)
2.0
variance2 = np.var(data2)
print(variance2)
2.0
std2 = np.sqrt(variance2)
print(std2)
1.4142135623730951
std2 = np.std(data2)
print(std2)
1.4142135623730951
mydata = np.array([35,50,50,50,56,60,60,75,250])
print("mean = ",np.mean(mydata))
print("std = ",np.std(mydata))
print("meadia = ",np.median(mydata))
q75, q25 = np.percentile(mydata,[75,25])
iqr = q75 - q25
print(f"iqr = {q75} - {q25} = {iqr}")
print("iqr = ",stats.iqr(mydata))
mean = 76.22222222222223 std = 62.26962480085701 meadia = 56.0 iqr = 60.0 - 50.0 = 10.0 iqr = 10.0