Saltar al contenido

Regresión lineal múltiple en Python

Por fin luego de mucho trabajar ya dimos con el resultado de esta contratiempo que algunos los lectores de nuestro sitio web presentan. Si quieres aportar algo no dejes de compartir tu comentario.

Solución:

sklearn.linear_model.LinearRegression lo haré:

from sklearn import linear_model
clf = linear_model.LinearRegression()
clf.fit([[getattr(t, 'x%d' % i) for i in range(1, 8)] for t in texts],
        [t.y for t in texts])

Luego clf.coef_ tendrá los coeficientes de regresión.

sklearn.linear_model también tiene interfaces similares para hacer varios tipos de regularizaciones en la regresión.

Aquí hay un pequeño trabajo que creé. Lo verifiqué con R y funciona correctamente.

import numpy as np
import statsmodels.api as sm

y = [1,2,3,4,3,4,5,4,5,5,4,5,4,5,4,5,6,5,4,5,4,3,4]

x = [
     [4,2,3,4,5,4,5,6,7,4,8,9,8,8,6,6,5,5,5,5,5,5,5],
     [4,1,2,3,4,5,6,7,5,8,7,8,7,8,7,8,7,7,7,7,7,6,5],
     [4,1,2,5,6,7,8,9,7,8,7,8,7,7,7,7,7,7,6,6,4,4,4]
     ]

def reg_m(y, x):
    ones = np.ones(len(x[0]))
    X = sm.add_constant(np.column_stack((x[0], ones)))
    for ele in x[1:]:
        X = sm.add_constant(np.column_stack((ele, X)))
    results = sm.OLS(y, X).fit()
    return results

Resultado:

print reg_m(y, x).summary()

Producción:

                            OLS Regression Results                            
==============================================================================
Dep. Variable:                      y   R-squared:                       0.535
Model:                            OLS   Adj. R-squared:                  0.461
Method:                 Least Squares   F-statistic:                     7.281
Date:                Tue, 19 Feb 2013   Prob (F-statistic):            0.00191
Time:                        21:51:28   Log-Likelihood:                -26.025
No. Observations:                  23   AIC:                             60.05
Df Residuals:                      19   BIC:                             64.59
Df Model:                           3                                         
==============================================================================
                 coef    std err          t      P>|t|      [95.0% Conf. Int.]
------------------------------------------------------------------------------
x1             0.2424      0.139      1.739      0.098        -0.049     0.534
x2             0.2360      0.149      1.587      0.129        -0.075     0.547
x3            -0.0618      0.145     -0.427      0.674        -0.365     0.241
const          1.5704      0.633      2.481      0.023         0.245     2.895

==============================================================================
Omnibus:                        6.904   Durbin-Watson:                   1.905
Prob(Omnibus):                  0.032   Jarque-Bera (JB):                4.708
Skew:                          -0.849   Prob(JB):                       0.0950
Kurtosis:                       4.426   Cond. No.                         38.6

pandas proporciona una forma conveniente de ejecutar OLS como se indica en esta respuesta:

Ejecute una regresión OLS con Pandas Data Frame

Solo para aclarar, el ejemplo que diste es múltiple regresión lineal, no multivariado referencia de regresión lineal. Diferencia:

El caso más simple de una sola variable predictora escalar x y una sola variable de respuesta escalar y se conoce como regresión lineal simple. La extensión a variables predictoras múltiples y/o vectoriales (indicadas con una X mayúscula) se conoce como regresión lineal múltiple, también conocida como regresión lineal multivariable. Casi todos los modelos de regresión del mundo real involucran múltiples predictores, y las descripciones básicas de la regresión lineal a menudo se expresan en términos del modelo de regresión múltiple. Tenga en cuenta, sin embargo, que en estos casos la variable de respuesta y sigue siendo un escalar. Otro término de regresión lineal multivariante se refiere a los casos en los que y es un vector, es decir, lo mismo que la regresión lineal general. Se debe enfatizar la diferencia entre la regresión lineal multivariable y la regresión lineal multivariable, ya que causa mucha confusión y malentendidos en la literatura.

En breve:

  • múltiple regresión lineal: la respuesta y es un escalar.
  • multivariante regresión lineal: la respuesta y es un vector.

(Otra fuente.)

Recuerda que puedes difundir esta crónica si si solucionó tu problema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *