es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo entrenar un modelo de regresión múltiple y obtener resultados de estimación en Python?

Tengo un dataframe. Este conjunto de datos contiene información de mi empresa y conocimiento de mis competidores. Se ve así:

Fecha a_mine b_mine a_comp b_comp c_mine c_comp
1.01.2020 17.328 6.736 10.592 66.836 3.15 3.15
1.02.2020 16.680 6.522 10.158 64.097 3.46 3.45
1.03.2020 13.616 5.334 8.282 58.554 3.76 3.75
1.04.2020 8.351 3.075 5.276 37.301 3.76 3.75
1.05.2020 13.610 5.837 7.773 54.955 3.76 3.76
1.06.2020 14.361 5.875 8.486 59.996 3.79 3.80

a_mine: ventas netas de mi empresa
a_comp: ventas netas de la competencia
b_mine: ventas con bonificación de mi empresa
b_comp: ventas con bonificación de la competencia
c_mine: precio unitario de mi producto
c_comp: precio unitario del producto de la competencia

Quiero encontrar el efecto de las ventas con bonificación en las ventas netas y finalmente, quiero crear una tabla de resultados como esta (un ejemplo de resultados):

Componente Parámetro Estimación Error_estándar t_valor Aprox Pr > | t |
a_mine constante 485052.1 22517.1 21.58 < 0001
b_mine escala 1.15365 0.12745 9.07 < 0001

Intenté entrenar mi modelo con regresión lineal múltiple. Pero no pude lograrlo para esto.

¿Cómo entrenar mi modelo y obtener estos resultados en Python?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para entrenar su modelo y obtener los resultados deseados, puede utilizar la biblioteca statsmodels en Python.

    Primero, debe importar la biblioteca y crear un marco de datos con sus datos:

    import statsmodels.api as sm
    import pandas as pd
    
    data = {'Date': ['1.01.2020', '1.02.2020', '1.03.2020', '1.04.2020', '1.05.2020', '1.06.2020'],
            'a_mine': [17.328, 16.680, 13.616, 8.351, 13.610, 14.361],
            'b_mine': [6.736, 6.522, 5.334, 3.075, 5.837, 5.875],
            'a_comp': [10.592, 10.158, 8.282, 5.276, 7.773, 8.486],
            'b_comp': [66.836, 64.097, 58.554, 37.301, 54.955, 59.996],
            'c_mine': [3.15, 3.46, 3.76, 3.76, 3.76, 3.79],
            'c_comp': [3.15, 3.45, 3.75, 3.75, 3.76, 3.80]}
    
    df = pd.DataFrame(data)
    

    Entonces, puede crear su modelo de regresión lineal múltiple con la función sm.formula.ols(). En este caso, desea predecir a_mine usando b_mine y el término constante.

    model = sm.formula.ols('a_mine ~ b_mine + 1', data=df)
    result = model.fit()
    print(result.summary())
    

    Esto imprimirá su tabla de resultados, que debe verse similar al ejemplo que proporcionó.

    Tenga en cuenta que el + 1 en la fórmula especifica que desea incluir el término constante en su modelo.

    También puede usar el método result.params para extraer las estimaciones de los parámetros:

    print(result.params)
    

    Esto imprimirá la estimación de la constante (Intercept) y el coeficiente para b_mine.

Comments are closed.