#7 Regresion Multiple

EJEMPLO DE REGRESION LINEAL MULTIPLE

El objetivo de este ejemplo fue analizar el desempeño académico en Matemáticas I de los estudiantes de Ingeniería de la UNEFA-NE (Universidad Nacional Experimental de las Fuerzas Armadas de Venezuela – Núcleo Nueva Esparta) utilizando el modelo de Regresión Múltiple. En este caso la variable dependiente y, fue el rendimiento académico general del estudiante en esa asignatura (en escala de 0-20) y las variables dependientes:

X1: Promedio de notas de bachillerato (nb4)

X2: Notas de matematicas en el Cuso introductorio(matcinu6)

x3: dedicacion semanal al estudio fde matematicas(dedica9)

x4: autoestima(autoest15)

x5: nivel educativo del padre(nepadre24)

x6:Relacion familiar(relacionf34)

x7: uso de blogs como recurso didactico (rdblog)

x8: Aclaracion de las dudas por el docente(dudasdoc37)

x9: Nivel de repitencia(rep7)

Estas variables tienen correlación significativa con la variable dependiente (detalles en la publicación#8 de este blog)

PROGRAMA EN PYTHON

#primero cargamos las librerias de python que utiliza el programa, leemos el archivo tipo excel y determinamos su dimension:

import pandas as pd
from pandas import ExcelFile
data1= pd.read_excel(‘jas19.xlsx’)
data1.shape

salida: (164×55)

”’

La dimension de la base de datos es 164×55, es decir 164 alumnos y 55 variables, las cuales se redujeron a 10, (9 independientes y 1 dependiente) tomando en cuenta como se dijo antes, las mayores correlaciones de las variables independientes con la variable dependiente.

Ahora definimos las 10 variables a usar

”’

X=data1[[  ‘nb4’,  ‘matcinu6’,  ‘dedica9′,’asesoria11’, ‘autoest15’, ‘nepadre24’, ‘relacionf34’, ‘rdmati’,’rdblog’,’dudasdoc37′,’rep7′ ]]
y=data1[[‘cal8’]]
#Estan son las variables seleccionadas
Preprocesamiento de los datos
​El preprocesamiento de los datos transforma las variables en
variables con media cero y varianza 1, lo cual permite un tratamiento insesgado de las variables
la libreria sklearn tiene este procedimiento automatizado, el cual invocamos a continuacion
from sklearn import preprocessing
​X=preprocessing.normalize(X)
print(X.shape)
print(y.shape)
salida:
164, 9)
(164, 1)
 
      ''' 
Division de los datos  
Ahora realizamos la division de los datos  en forma aleatoria 
Nuevamente invocamos sklearn   
'''
from sklearn.model_selection import train_test_split  
X_train, X_test, y_train, y_test = train_test_split(X,y, 
test_size=0.33, random_state=42)  
print(X_train.shape)
print(y_train.shape)  
print(X_test.shape)
print(y_test.shape)
salida:
(109, 9)
(109, 1)
(55, 9)
(55, 1)
'''
Los datos   de construccion fueron un total de 109,
mientras que los datos de prueba   fueron 55.     
Ahora,   invocamos  el modulo de Linear   Regresion desde sklearn
y el modulo de metricas y luego entrenamos el modelo
'''     
from sklearn.linear_model import LinearRegression     
from sklearn import   metrics     
model =   LinearRegression()     
model.fit(X_train,y_train)     
#Resultados      
print('intercept: ',model.intercept_)  
print ('Coefficients: ', model.coef_)  
predy=model.predict(X_train)  
print(metrics.r2_score(y_train,predy))  

salida: intercepto, coeficientes y R2
intercept:  [-48.01274719]
Coefficients:[39.88433889  39.96228126 39.85694224    
              -9.09651957   2.2309526  -13.2340093     
              62.48698455    -1.7206179  -82.16102567]]     
     R2=0.7778738689631319   

Este ultimo resultado nos indica que el modelo es bastante bueno 
ya que el porcentaje de explicación
del mismo es de 77%. 
'''
”’
EVALUACION DEL MODELO
La evaluación del modelo se realiza usando los datos
de prueba, primero hacemos la predicción de los datos  
prueba que son datos no utilizados en la construcción
del modelo y luego
calculamos el R2 correspondiente. Logicamente este
R2 de prueba va a dar menor que el R2 correspondiente a
 los datos de construcción. Pero si se mantiene alto,
podemos concluir que el modelo es exitoso para predecir y
en base X
”’
#Codigo para evaluar el modelo
predy_test=model.predict(X_test)
from sklearn import metrics
print(metrics.r2_score(y_test,predy_test))
”’
Salida
0.6642294077237553
Este resultado valida el modelo ya que para los datos de prueba se produce un R2 de 66% que es bastante bueno si consideramos que los datos son de naturaleza social.
 Podemos concluir que el modelo es exitoso para predecir y
en base X
”’

Leave a comment

Design a site like this with WordPress.com
Get started