<jupyter_start><jupyter_text>Importamos las librerías necesarias<jupyter_code>import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
from scipy.stats import skewnorm<jupyter_output><empty_output><jupyter_text>Creamos un dataframe<jupyter_code>data = pd.DataFrame({'x':[1,2,3,4,5,6,7,8,9,10],
                     'y':[1.2,2.4,3,3.9,5.6,6,7.1,7.8,9,10.2]})
data.head()<jupyter_output><empty_output><jupyter_text>Ajustamos una regresión lineal<jupyter_code>sns.regplot(data['x'],data['y'])<jupyter_output><empty_output><jupyter_text>Agregamos dos outliers para ver cómo éstos afectan al regresor lineal<jupyter_code>data = pd.DataFrame({'x':[1,2,3,4,5,6,7,7,8,8,9,10],
                     'y':[1.2,2.4,3,3.9,5.6,6,7.1,25,22,7.8,9,10.2]})
data.head()<jupyter_output><empty_output><jupyter_text>Ajustamos nuevamente una regresión lineal<jupyter_code>sns.regplot(data['x'],data['y'])<jupyter_output><empty_output><jupyter_text>Como podemos observar, la distribución se ve fuertemente afectada por los outliers. Distribución normal1. Creamos una distribucion normal con media 0 y desviación estándar de 12. Graficamos un histograma (azul) de los puntos que creamos en el paso anterior.3. Ajustamos la línea de mejor ajuste (rojo) a nuestros datos<jupyter_code>fig, ax = plt.subplots(1, 1)
mu, sigma = 0, 1 # mean and standard deviation
s = np.random.normal(mu, sigma, 10000)

count, bins, ignored = plt.hist(s, 30, density=True)
plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
               np.exp( - (bins - mu)**2 / (2 * sigma**2) ),
         linewidth=2, color='r')
plt.show()<jupyter_output><empty_output><jupyter_text>Creamos un boxplot para ver si existen outliers<jupyter_code>sns.set(style="whitegrid")
tips = sns.load_dataset("tips")
ax = sns.boxplot(s)<jupyter_output><empty_output><jupyter_text>Distribución con sesgo positivo1. Creamos un conjunto de puntos acorde a una distribución con sesgo positivo2. Graficamos los puntos (rojo)<jupyter_code>fig, ax = plt.subplots(1, 1)
a = 4
mean, var, skew, kurt = skewnorm.stats(a, moments='mvsk')
x = np.linspace(skewnorm.ppf(0.01, a), skewnorm.ppf(0.99, a), 100)
ax.plot(x,skewnorm.pdf(x,a),'r-', lw=5, alpha=0.6, label='skewnorm pdf')<jupyter_output><empty_output><jupyter_text>Creamos un boxplot para ver si existen outliers<jupyter_code>r = skewnorm.rvs(a, size=1000)
sns.set(style="whitegrid")
tips = sns.load_dataset("tips")
ax = sns.boxplot(r)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1478331308221952, 'fraction_numerical': 0.043337383556095586, 'mean_word_length': 6.138728323699422, 'pattern_counts': {'":': 0, '<': 37, '<?xml version=': 0, '>': 37, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '9', 'dir': 'jupyter-structured-clean-dedup', 'id': '86288', 'license': 'MIT', 'n_tokens_mistral': 1081, 'n_tokens_neox': 1023, 'n_words': 195, 'path': 'ejemplos_de_clase/06_outliers.ipynb', 'repo_name': 'alejopaullier96/um-data-science', 'size': '2469'}