Två numeriska förklaringsvariabler

Intermediär regression med statsmodels i Python

Maarten Van den Broeck

Content Developer at DataCamp

Visualisera tre numeriska variabler

  • 3D-spridningsdiagram
  • 2D-spridningsdiagram med utfallet som färg
Intermediär regression med statsmodels i Python

Ytterligare en kolumn i fishdatamängden

species mass_g length_cm height_cm
Bream 1000 33.5 18.96
Bream 925 36.2 18.75
Roach 290 24.0 8.88
Roach 390 29.5 9.48
Perch 1100 39.0 12.80
Perch 1000 40.2 12.60
Pike 1250 52.0 10.69
Pike 1650 59.0 10.81
Intermediär regression med statsmodels i Python

3D-spridningsdiagram

3D-spridningsdiagram över alla fiskarter, med längd, massa och höjd på axlarna. Diagrammet är svårt att tolka i ett 2D-plan.

Intermediär regression med statsmodels i Python

2D-spridningsdiagram med färg för utfallet

sns.scatterplot(x="length_cm", 
                y="height_cm",
                data=fish,
                hue="mass_g")

2D-spridningsdiagram där massa är färgkodad för att visualisera en tredje numerisk variabel.

Intermediär regression med statsmodels i Python

Modellera med två numeriska förklaringsvariabler

mdl_mass_vs_both = ols("mass_g ~ length_cm + height_cm",
                       data=fish).fit()

print(mdl_mass_vs_both.params)
Intercept   -622.150234
length_cm     28.968405
height_cm     26.334804
Intermediär regression med statsmodels i Python

Prediktionsflödet

from itertools import product

length_cm = np.arange(5, 61, 5)
height_cm = np.arange(2, 21, 2)

p = product(length_cm, height_cm)

explanatory_data = pd.DataFrame(p,
                                columns=["length_cm",
                                         "height_cm"])
prediction_data = explanatory_data.assign(
  mass_g = mdl_mass_vs_both.predict(explanatory_data))
print(prediction_data)
     length_cm  height_cm       mass_g
0            5          2  -424.638603
1            5          4  -371.968995
2            5          6  -319.299387
3            5          8  -266.629780
4            5         10  -213.960172
..         ...        ...          ...
115         60         12  1431.971694
116         60         14  1484.641302
117         60         16  1537.310909
118         60         18  1589.980517
119         60         20  1642.650125

[120 rows x 3 columns]
Intermediär regression med statsmodels i Python

Visualisera prediktionerna

sns.scatterplot(x="length_cm",
                y="height_cm",
                data=fish,
                hue="mass_g")
sns.scatterplot(x="length_cm",
                y="height_cm",
                data=prediction_data,
                hue="mass_g",
                legend=False,
                marker="s")
plt.show()

Spridningsdiagram över fiskarnas längd, höjd och massa, med ett prediktionsgitter.

Intermediär regression med statsmodels i Python

Inkludera en interaktionsterm

mdl_mass_vs_both_inter = ols("mass_g ~ length_cm * height_cm",
                             data=fish).fit()
print(mdl_mass_vs_both_inter.params)
Intercept              159.107480
length_cm                0.301426
height_cm              -78.125178
length_cm:height_cm      3.545435
Intermediär regression med statsmodels i Python

Prediktionsflödet med en interaktionsterm

length_cm = np.arange(5, 61, 5)
height_cm = np.arange(2, 21, 2)

p = product(length_cm, height_cm)

explanatory_data = pd.DataFrame(p,
                                columns=["length_cm",
                                         "height_cm"])

prediction_data = explanatory_data.assign(
  mass_g = mdl_mass_vs_both_inter.predict(explanatory_data))
Intermediär regression med statsmodels i Python

Visualisera prediktionerna

sns.scatterplot(x="length_cm",
           y="height_cm",
           data=fish,
           hue="mass_g")

sns.scatterplot(x="length_cm",
                y="height_cm",
                data=prediction_data,
                hue="mass_g",
                legend=False,
                marker="s")
plt.show()

Spridningsdiagram över fiskarnas längd, höjd och massa, med en interaktionsterm på ett prediktionsgitter.

Intermediär regression med statsmodels i Python

Nu kör vi en övning!

Intermediär regression med statsmodels i Python

Preparing Video For Download...