In [1]:
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
In [6]:
medidas = np.random.normal(0, 1, size=100)
plt.figure()
plt.plot(medidas, '.')
plt.axhline(y=0, ls='--', c='k')
plt.show()
In [7]:
medidas = np.random.normal(0, 0.1, size=100)
plt.figure()
plt.plot(medidas, '.')
plt.axhline(y=0, ls='--', c='k')
plt.show()
In [10]:
x1 = np.random.normal(0, 1, size=1000)
x2 = np.random.normal(0, 0.1, size=1000)
plt.figure()
plt.subplot(221)
plt.plot(x1, '.')
plt.axhline(y=0, c='k')
plt.subplot(222)
plt.hist(x1)
plt.subplot(223)
plt.plot(x2, '.')
plt.axhline(y=0, c='k')
plt.subplot(224)
plt.hist(x2)
plt.tight_layout()
plt.show()
In [13]:
x1 = np.random.normal(0, 1, size=1000)
x2 = np.random.normal(10, 1, size=1000)
plt.figure()
plt.subplot(221)
plt.plot(x1, '.')
plt.axhline(y=0, c='k')
plt.subplot(222)
plt.hist(x1)
plt.subplot(223)
plt.plot(x2, '.')
plt.axhline(y=0, c='k')
plt.axhline(y=10, c='y')
plt.subplot(224)
plt.hist(x2)
plt.tight_layout()
plt.show()
In [25]:
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype=float)
y = 10 * x
y = y + np.random.normal(0, 1, size=10)
y_original = 10 * x
plt.figure()
plt.scatter(x, y)
plt.plot(x, y_original, c='r')
plt.xlabel('Numero de baldozas medidas')
plt.ylabel('Medida [cm]')
plt.grid()
plt.show()
In [47]:
from scipy.stats import linregress
x = np.arange(1, 11, 1)
y = 10.0 * x
y += np.random.normal(0, 2, size=y.shape)
m, b, r, *otros = linregress(x, y)
print(m, b, r)
y_ajustado = m * x + b
plt.figure()
plt.scatter(x, y, label='datos originales')
plt.plot(x, y_ajustado, c='green',
label='$y = {m:.2f}x {b:+.2f}$'.format(m=m, b=b))
plt.legend()
plt.grid()
plt.show()
In [50]:
x = np.arange(1, 11, 1)
y = 10.0 * x
y += np.random.normal(0, 100, size=y.shape)
m, b, r, *otros = linregress(x, y)
print(m, b, r)
y_ajustado = m * x + b
plt.figure()
plt.scatter(x, y, label='datos originales')
plt.plot(x, y_ajustado, c='green',
label='$y = {m:.2f}x {b:+.2f}$'.format(m=m, b=b))
plt.legend()
plt.grid()
plt.show()
In [54]:
x = np.linspace(0, 10, 20)
y = 3 * x ** 2
y += np.random.normal(0, 0.5, size=y.shape)
m, b, r, *otros = linregress(x, y)
y_ajustado = m * x + b
plt.figure()
plt.scatter(x, y)
plt.plot(x, y_ajustado, '--g')
plt.title('Datos de la forma $y=ax^2$')
plt.xlabel('$x$')
plt.ylabel('$y$')
plt.grid()
plt.show()
Si tengo datos de la forma $$ y = a x ^ 2 $$ y aplico la transformacion $$ X = x ^ 2 $$ entonces obtengo $$ y = a X $$
In [57]:
X = x ** 2
plt.figure()
plt.scatter(X, y)
plt.xlabel('$X$')
plt.ylabel('$y$')
plt.title('Datos linealizados, de la forma $y = m x + b$')
plt.show()
In [58]:
X = x ** 2
m, b, r, *otros = linregress(X, y)
y_ajustado = m * X + b
print(m, b, r)
plt.figure()
plt.scatter(X, y, c='r', label='datos')
plt.plot(X, y_ajustado, c='g', label='ajuste')
plt.xlabel('$X$')
plt.ylabel('$y$')
plt.title('Datos linealizados, de la forma $y = m x + b$')
plt.legend()
plt.grid()
plt.show()
In [68]:
x = np.linspace(0, 10, 20)
y = 3 * x ** 2
y += np.random.normal(0, 0.5, size=y.shape)
m, b, r, *otros = linregress(x, y)
y_ajustado = m * x + b
fig = plt.figure()
plt.scatter(x, y)
plt.plot(x, y_ajustado, '--g')
plt.title('Datos de la forma $y=ax^2$')
plt.xlabel('$x$')
plt.ylabel('$y$')
plt.grid()
fig.add_axes([0.3, 0.6, 0.2, 0.2])
plt.scatter(x[x < 4], y[x < 4])
plt.plot(x[x < 4], y_ajustado[x < 4], '--g')
plt.grid()
plt.show()
In [81]:
x = np.linspace(0.1, 10)
y = 3.0 * x ** 1.32
# y += np.random.normal(0, 0.2, size=y.shape)
plt.figure()
plt.scatter(x, y)
plt.title('Datos de la forma $y = Ax^n$')
plt.grid()
plt.show()
Si tenemos datos de la forma $$ y = A x ^ n $$ y aplicamos logaritmos a amabos lados, $$ \log y = \log {\left(A x ^ n \right)} $$ y luego algunas propiedades de los logaritmos, $$ \log y = \log A + \log {\left(x ^ n \right)} $$ y $$ \log y = \log A + n \log x $$
Luego de esto aplico las transformaciones, $$ X = \log x $$ y $$ Y = \log y $$ entonces obtengo, $$ Y = \log A + n X $$
In [85]:
X = np.log2(x)
Y = np.log2(y)
m, b, r, *otros = linregress(X, Y)
print(m, b, r)
print(2 ** b)
plt.figure()
plt.scatter(X, Y)
plt.plot(X, m * X + b, c='orange')
plt.show()
In [86]:
X = np.log10(x)
Y = np.log10(y)
m, b, r, *otros = linregress(X, Y)
print(m, b, r)
print(10 ** b)
plt.figure()
plt.scatter(X, Y)
plt.plot(X, m * X + b, c='orange')
plt.show()
In [92]:
x = np.linspace(0, 10, 200)
y = np.exp(-(x - 5)**2 / 0.3) + 2 * np.exp(-(x - 7)**2 / 0.3)
plt.figure()
plt.scatter(x, y)
plt.show()
In [ ]: