import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
# Datos
data = {
'Tiempo_entrega' : [ 9.95 , 24.45 , 31.75 , 35.00 , 25.02 , 16.8 , 14.38 , 9.60 , 24.35 , 27.50 ,
17.08 , 37.00 , 41.95 , 11.66 , 21.65 , 17.89 , 69.00 , 10.30 , 34.93 , 46.59 ,
44.88 , 54.12 , 56.63 , 22.13 , 21.15 ] ,
'Numero_latas' : [ 2 , 8 , 11 , 10 , 8 , 4 , 2 , 2 , 9 , 8 , 4 , 11 , 12 , 2 , 4 , 4 , 20 , 1 , 10 , 15 ,
15 , 16 , 17 , 6 , 5 ] ,
'Distancias_pies' : [ 50 , 110 , 120 , 550 , 295 , 200 , 375 , 52 , 100 , 300 , 412 , 400 , 500 ,
360 , 205 , 400 , 600 , 585 , 540 , 250 , 290 , 510 , 590 , 100 , 400 ]
}
# Convertir a DataFrame
df = pd.DataFrame ( data)
# Variables predictoras (X) y variable de respuesta (y)
X = df[ [ 'Numero_latas' , 'Distancias_pies' ] ]
y = df[ 'Tiempo_entrega' ]
# Modelo de regresión lineal
regression_model = LinearRegression( )
# Ajustar el modelo
regression_model.fit ( X, y)
# Coeficientes de correlación y determinación múltiple
R = np.corrcoef ( df.values .T ) [ 0 , 1 ]
R_squared = r2_score( y, regression_model.predict ( X) )
# Error estándar de la estimación múltiple
n = len ( df)
p = 2 # número de variables predictoras
y_pred = regression_model.predict ( X)
residuals = y - y_pred
MSE = np.sum ( residuals**2 ) / ( n - p - 1 )
SEM = np.sqrt ( MSE)
# Coeficientes de la regresión
coeficientes = regression_model.coef_
intercepto = regression_model.intercept_
# Mostrar resultados
print ( "Coeficiente de correlación (R):" , R)
print ( "Coeficiente de determinación (R^2):" , R_squared)
print ( "Error estándar de la estimación múltiple (SEM):" , SEM)
print ( "Coeficientes de la regresión:" )
print ( "Intercepto:" , intercepto)
print ( "Coeficientes de las variables predictoras:" , coeficientes)
aW1wb3J0IG51bXB5IGFzIG5wCmltcG9ydCBwYW5kYXMgYXMgcGQKZnJvbSBza2xlYXJuLmxpbmVhcl9tb2RlbCBpbXBvcnQgTGluZWFyUmVncmVzc2lvbgpmcm9tIHNrbGVhcm4ubWV0cmljcyBpbXBvcnQgcjJfc2NvcmUKCiMgRGF0b3MKZGF0YSA9IHsKICAgICdUaWVtcG9fZW50cmVnYSc6IFs5Ljk1LCAyNC40NSwgMzEuNzUsIDM1LjAwLCAyNS4wMiwgMTYuOCwgMTQuMzgsIDkuNjAsIDI0LjM1LCAyNy41MCwgCiAgICAgICAgICAgICAgICAgICAgICAgMTcuMDgsIDM3LjAwLCA0MS45NSwgMTEuNjYsIDIxLjY1LCAxNy44OSwgNjkuMDAsIDEwLjMwLCAzNC45MywgNDYuNTksIAogICAgICAgICAgICAgICAgICAgICAgIDQ0Ljg4LCA1NC4xMiwgNTYuNjMsIDIyLjEzLCAyMS4xNV0sCiAgICAnTnVtZXJvX2xhdGFzJzogWzIsIDgsIDExLCAxMCwgOCwgNCwgMiwgMiwgOSwgOCwgNCwgMTEsIDEyLCAyLCA0LCA0LCAyMCwgMSwgMTAsIDE1LCAKICAgICAgICAgICAgICAgICAgICAgMTUsIDE2LCAxNywgNiwgNV0sCiAgICAnRGlzdGFuY2lhc19waWVzJzogWzUwLCAxMTAsIDEyMCwgNTUwLCAyOTUsIDIwMCwgMzc1LCA1MiwgMTAwLCAzMDAsIDQxMiwgNDAwLCA1MDAsIAogICAgICAgICAgICAgICAgICAgICAgICAzNjAsIDIwNSwgNDAwLCA2MDAsIDU4NSwgNTQwLCAyNTAsIDI5MCwgNTEwLCA1OTAsIDEwMCwgNDAwXQp9CgojIENvbnZlcnRpciBhIERhdGFGcmFtZQpkZiA9IHBkLkRhdGFGcmFtZShkYXRhKQoKIyBWYXJpYWJsZXMgcHJlZGljdG9yYXMgKFgpIHkgdmFyaWFibGUgZGUgcmVzcHVlc3RhICh5KQpYID0gZGZbWydOdW1lcm9fbGF0YXMnLCAnRGlzdGFuY2lhc19waWVzJ11dCnkgPSBkZlsnVGllbXBvX2VudHJlZ2EnXQoKIyBNb2RlbG8gZGUgcmVncmVzacOzbiBsaW5lYWwKcmVncmVzc2lvbl9tb2RlbCA9IExpbmVhclJlZ3Jlc3Npb24oKQoKIyBBanVzdGFyIGVsIG1vZGVsbwpyZWdyZXNzaW9uX21vZGVsLmZpdChYLCB5KQoKIyBDb2VmaWNpZW50ZXMgZGUgY29ycmVsYWNpw7NuIHkgZGV0ZXJtaW5hY2nDs24gbcO6bHRpcGxlClIgPSBucC5jb3JyY29lZihkZi52YWx1ZXMuVClbMCwxXQpSX3NxdWFyZWQgPSByMl9zY29yZSh5LCByZWdyZXNzaW9uX21vZGVsLnByZWRpY3QoWCkpCgojIEVycm9yIGVzdMOhbmRhciBkZSBsYSBlc3RpbWFjacOzbiBtw7psdGlwbGUKbiA9IGxlbihkZikKcCA9IDIgICMgbsO6bWVybyBkZSB2YXJpYWJsZXMgcHJlZGljdG9yYXMKeV9wcmVkID0gcmVncmVzc2lvbl9tb2RlbC5wcmVkaWN0KFgpCnJlc2lkdWFscyA9IHkgLSB5X3ByZWQKTVNFID0gbnAuc3VtKHJlc2lkdWFscyoqMikgLyAobiAtIHAgLSAxKQpTRU0gPSBucC5zcXJ0KE1TRSkKCiMgQ29lZmljaWVudGVzIGRlIGxhIHJlZ3Jlc2nDs24KY29lZmljaWVudGVzID0gcmVncmVzc2lvbl9tb2RlbC5jb2VmXwppbnRlcmNlcHRvID0gcmVncmVzc2lvbl9tb2RlbC5pbnRlcmNlcHRfCgojIE1vc3RyYXIgcmVzdWx0YWRvcwpwcmludCgiQ29lZmljaWVudGUgZGUgY29ycmVsYWNpw7NuIChSKToiLCBSKQpwcmludCgiQ29lZmljaWVudGUgZGUgZGV0ZXJtaW5hY2nDs24gKFJeMik6IiwgUl9zcXVhcmVkKQpwcmludCgiRXJyb3IgZXN0w6FuZGFyIGRlIGxhIGVzdGltYWNpw7NuIG3Dumx0aXBsZSAoU0VNKToiLCBTRU0pCnByaW50KCJDb2VmaWNpZW50ZXMgZGUgbGEgcmVncmVzacOzbjoiKQpwcmludCgiSW50ZXJjZXB0bzoiLCBpbnRlcmNlcHRvKQpwcmludCgiQ29lZmljaWVudGVzIGRlIGxhcyB2YXJpYWJsZXMgcHJlZGljdG9yYXM6IiwgY29lZmljaWVudGVzKQoK