#5-REGRESION LINEAL SIMPLE CON PYTHON

Nuestro primer problema a resolver usando python consiste en determinar el modelo lineal simple y=a+bx+e que mejor se ajusta a un conjunto de datos conocidos (xi,yi) para i desde 1 hasta n. Para fijar ideas consideremos yi =el precio del $ paralelo en relacion al bolivar desde el mes de Marzo de 2019 hasta Agosto de 2019. Usando los datos aportados por la pagina dolar today, tenemos los siguientes datos:

mes (X)precio: Bolivares/$
1 (Marzo)3100
24629
35917
47500
511000
618000

El trabajo consiste en analizar los datos usando el modelo de  regresión lineal simple, la relación de la variable  x sobre la variable  y

Específicamente se pide:

  • Diagrama de dispersión
  • Determinar la ecuación de la recta de regresión de Y sobre X
  • interprete del coeficiente de regresión b
  • Dibuje la linea de regresión conjuntamente con el diagrama de dispersión
  • coeficiente de bondad del ajuste  R^2
  • Predecir la variable y para el valor un valor dado de X

Para la teoría de la regresión lineal simple ver: clase-reg

Soluci’on del problema en python

”’

Objetivo: construir una gráfica de dispersión, dibujar la línea de
regresión, y calcular los estadísticos de la regresión

1. Lectura de los datos. Los datos se pueden leer directamente como listas o exportarlos de una tabla Excel o csv o de una pagina web. En este caso como son pocos datos los leemos como listas

”’
x=[1, 2, 3, 4, 5, 6 ]

y=[3100, 4629, 5917, 7500,11000,18000]

”’

2. Diagrama de dispersion

para realizar el diagrama necesitamos la librería matplotlib la importamos como plt y dibujamos el diagrama de dispersión

”’

import matplotlib.pyplot as plt

plt.scatter(x,y, color=’red’, “*”)

plt.title(‘Regresión Lineal Simple’)
plt.xlabel(‘mes’)
plt.ylabel(‘precio Bs/1dolar’)
plt.show()

”’

El comando scatter produce el diagrama de dispersión y los comandos title, xlabel, y ylabel producen los títulos correspondientes en la gráfica.
Salida :

”’

”’

3. Calculo de los coeficientes de la linea de regresión

las formulas a usar son:

a=(my)-b*(mx)

”’

Notacion:

n= longitud de los datos

SSxy suma de productos de xy

SSx= suma de cuadrados de x

Sx=suma de los valores de x

Sy = suma de los valores de y

mx=media de los valores de x,

my=media de los valores de y

Para hacer estos cálculos necesitamos importar la libreria numpy, la importaremos como np

”’

import numpy as np

n=len(x)
Sx=sum(x)
SSx=np.dot(x,x)
Sy=sum(y)
SSxy=np.dot(x,y)
mx= np.mean(x)
my= np.mean(y)

b=(n*SSxy-Sx*Sy)/(n*SSx-Sx* Sx )
a=my-b*mx

print(Sx,SSx,Sy,SSxy,mx,my)

print(a,b) # coeficientes de regresión

”’

Una vez corrida esta parte del programa, se obtuvieron los siguientes resultados:

Sx=21, SSx= 91, Sy=50146, Sxy=223109, mx= 3.5, my=8357.66

a= -1161.93, b=2719.89

Por lo tanto nuestra linea de regresion es

y = -1161.93 + 2719.89*x

4. Interpretación de b

En general b es la variación (aumento o disminución) estimada de y por el incremento de x en una unidad. En este caso, b=2719.89 es el aumento estimado del precio del dolar respecto al bolívar por cada nuevo mes desde el mes de marzo.

5. Gráfica de la linea de regresión conjuntamente con los datos

,,,

plt.scatter(x,y )
plt.plot(x, a+b*np.array(x), ‘-r’)
plt.xlabel(“Meses”)
plt.ylabel(“Precio Bs./d.”)

”’

Aquí se presenta la salida

”’

6. Calculo de R-cuadrado (R2)

El R2 es una medida de la evaluaci’on del modelo y se define como la correlación al cuadrado entre los valores observados y  predichos. Su valor esta entre 0 y 1 y generalmente se expresa en porcentaje

R-cuadrado=cor(y,ypred)^2

Cuanto mayor sea el R2, mejor será el modelo

Una formula facil para calcular R2 es

R2=1-(SSres/SSyy)

SSres=suma de cuadrados de los residuos
SSyy = suma de cuadrados de y

Código para el calculo de R2

ypred = a+b*np.array(x)
res=y-ypred

SSres=np.dot(res,res)
SSyy = np.dot(y,y) – n*my*my
R2=1-SSres/SSyy
print(R2)

  ”’

El calculo de R2 usando este codigo es

0.8735864234951496.

Por tanto, R2=87.4%. lo que indica que la linea de regresión se ajusta bien a los datos

.Prediccion

Para hacer una prediccion con la linea de regresion calculada

y = -1161.93 + 2719.89*x ,

simplemente sustituimos x en la formula p.ej, para el mes de Septiembre (x=7), el valor de y estimado es

y = -1161.93 + 2719.89*7=17877,3

Join the Conversation

  1. Ciencias Ambientales al alcance de todos's avatar
  2. suniagajesus's avatar

2 Comments

Leave a comment

Design a site like this with WordPress.com
Get started