%matplotlib inline
from ipywidgets import *
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import scipy.stats as stats
from matplotlib.lines import Line2D
plt.rcParams["figure.figsize"] = (20,10)
plt.rcParams.update({'font.size': 22})
def describe(data):
df = pd.DataFrame(data)
print(df.describe())
def histogram(data, a=1, b=0):
data = data*a+b
plt.hist(x=data, bins='auto', color='#521422', alpha=0.7, rwidth=0.85)
plt.grid(axis='y', alpha=0.75)
plt.xlabel('X')
plt.ylabel('Liczność')
describe(data)
plt.xlim(xmin=-13,xmax=13)
def normal_dist():
x = np.linspace(-3, 3, 100)
plt.plot(x, stats.norm.pdf(x, 0, 1))
plt.grid()
def skewness(a=0):
data = (stats.skewnorm(a).rvs(1000)*10).astype(int)
_, _, patches = plt.hist(x=data, bins='auto', color='#521422', alpha=0.7, rwidth=0.85)
plt.grid(axis='y', alpha=0.75)
plt.xlabel('X')
plt.ylabel('Liczność')
stat = [np.mean(data), np.median(data), stats.mode(data)[0][0]]
cols = ['r', 'g', 'b']
lines = [Line2D([0], [0], color=c, lw=4) for c in cols]
for col, st in zip(cols, stat):
for i, patch in enumerate(patches):
if st < patch.get_x():
patches[i-1].set_color(col)
break
if i == len(patches)-1:
patches[i].set_color(col)
plt.suptitle("Skośność="+str(round(stats.skew(data),3)))
plt.legend(lines,[txt +'='+str(stat[i]) for i, txt in enumerate(['Średnia', 'Mediana', 'Dominanta'])])
Dominantą nazywamy najczęściej występującą wartość w próbce.
$n$ - liczba obserwacji \vspace{0.5cm}
\begin{itemize} \item $n$ nieparzyste $$\textrm{Mediana} = x_{(n+1)/2}$$ \vspace{0.25cm} \item $n$ parzyste $$\textrm{Mediana} = \frac{x_{n/2}+x_{n/2+1}}{2}$$ \end{itemize}Dominanta | Mediana | Średnia | |
---|---|---|---|
Nominalne | |||
Porządkowe | |||
Interwałowe/Ilorazowe |
data = np.random.normal(loc=1, scale=1, size=1000)
describe(data)
interact(histogram, data=fixed(data), a=(-3,3,1), b=(-10,10,1))
normal_dist()
interact(skewness, a=(-20,20,2))
$n_i$ - liczność $i$-tego przedziału
$\dot{x_i}$ - środek $i$-tego przedziału
\begin{itemize} \item Średnia: $$\bar{x_S} \approx \frac{\sum\limits_{i=1}^kn_i*\dot{x_i}}{n}$$ \item Wariancja: $$s^2_S \approx \frac{\sum\limits_{i=1}^kn_i*(\dot{x}-\bar{x})^2}{n-1}$$ \end{itemize}