Odlehlé hodnoty, páka a vliv

Úvod do regrese s knihovnou statsmodels v Pythonu

Maarten Van den Broeck

Content Developer at DataCamp

Datová sada karasů

roach = fish[fish['species'] == "Roach"]
print(roach.head())
   species  mass_g  length_cm
35   Roach    40.0       12.9
36   Roach    69.0       16.5
37   Roach    78.0       17.5
38   Roach    87.0       18.2
39   Roach   120.0       18.6

Obecný karas

Úvod do regrese s knihovnou statsmodels v Pythonu

Které body jsou odlehlé hodnoty?

sns.regplot(x="length_cm",
            y="mass_g",
            data=roach,
            ci=None)
plt.show()

Bodový graf hmotnosti karasů v závislosti na délce s regresní přímkou. Většina bodů těsně sleduje regresní přímku.

Úvod do regrese s knihovnou statsmodels v Pythonu

Extrémní hodnoty vysvětlující proměnné

roach["extreme_l"] = ((roach["length_cm"] < 15) |
                    (roach["length_cm"] > 26))

fig = plt.figure()
sns.regplot(x="length_cm",
            y="mass_g",
            data=roach,
            ci=None)

sns.scatterplot(x="length_cm",
                y="mass_g",
                hue="extreme_l",
                data=roach)

Bodový graf hmotnosti karasů v závislosti na délce s regresní přímkou. Většina bodů je modrá, ale jeden velmi krátký a jeden velmi dlouhý karas jsou označeny oranžově.

Úvod do regrese s knihovnou statsmodels v Pythonu

Hodnoty odezvy vzdálené od regresní přímky

roach["extreme_m"] = roach["mass_g"] < 1

fig = plt.figure()
sns.regplot(x="length_cm",
            y="mass_g",
            data=roach,
            ci=None)

sns.scatterplot(x="length_cm",
                y="mass_g",
                hue="extreme_l",
                style="extreme_m",
                data=roach)

Bodový graf hmotnosti karasů v závislosti na délce s regresní přímkou. Většina bodů je modrá, ale jeden velmi krátký a jeden velmi dlouhý karas jsou označeny oranžově. Většina bodů jsou kruhy, ale jeden bod s nulovou hmotností je křížek.

Úvod do regrese s knihovnou statsmodels v Pythonu

Páka a vliv

Páka měří, jak extrémní jsou hodnoty vysvětlující proměnné.

Vliv měří, jak moc by se model změnil, kdyby bylo pozorování vynecháno z datové sady.

Osoba utahující klíčem šroub

Úvod do regrese s knihovnou statsmodels v Pythonu

.get_influence() a .summary_frame()

mdl_roach = ols("mass_g ~ length_cm", data=roach).fit()

summary_roach = mdl_roach.get_influence().summary_frame()
roach["leverage"] = summary_roach["hat_diag"] print(roach.head())
   species  mass_g  length_cm  leverage
35   Roach    40.0       12.9  0.313729
36   Roach    69.0       16.5  0.125538
37   Roach    78.0       17.5  0.093487
38   Roach    87.0       18.2  0.076283
39   Roach   120.0       18.6  0.068387
Úvod do regrese s knihovnou statsmodels v Pythonu

Cookova vzdálenost

Cookova vzdálenost je nejběžnější mírou vlivu.

roach["cooks_dist"] = summary_roach["cooks_d"]
print(roach.head())
   species  mass_g  length_cm  leverage  cooks_dist
35   Roach    40.0       12.9  0.313729    1.074015
36   Roach    69.0       16.5  0.125538    0.010429
37   Roach    78.0       17.5  0.093487    0.000020
38   Roach    87.0       18.2  0.076283    0.001980
39   Roach   120.0       18.6  0.068387    0.006610
Úvod do regrese s knihovnou statsmodels v Pythonu

Nejvlivnější karasové

print(roach.sort_values("cooks_dist", ascending = False))
   species  mass_g  length_cm  leverage  cooks_dist
35   Roach    40.0       12.9  0.313729    1.074015 # really short roach
54   Roach   390.0       29.5  0.394740    0.365782 # really long roach
40   Roach     0.0       19.0  0.061897    0.311852 # roach with zero mass
52   Roach   290.0       24.0  0.099488    0.150064
51   Roach   180.0       23.6  0.088391    0.061209
..     ...     ...        ...       ...         ...
43   Roach   150.0       20.4  0.050264    0.000257
44   Roach   145.0       20.5  0.050092    0.000256
42   Roach   120.0       19.4  0.056815    0.000199
47   Roach   160.0       21.1  0.050910    0.000137
37   Roach    78.0       17.5  0.093487    0.000020
Úvod do regrese s knihovnou statsmodels v Pythonu

Odebrání nejvlivnějšího karase

roach_not_short = roach[roach["length_cm"] != 12.9]

sns.regplot(x="length_cm",
            y="mass_g",
            data=roach,
            ci=None,
            line_kws={"color": "green"})

sns.regplot(x="length_cm",
            y="mass_g",
            data=roach_not_short,
            ci=None,
            line_kws={"color": "red"})

Bodový graf hmotnosti karasů v závislosti na délce se dvěma regresními přímkami. Jedna používá všechna data, druhá vylučuje nejkratšího karase. Druhá přímka má výrazně strmější sklon.

Úvod do regrese s knihovnou statsmodels v Pythonu

Lass uns üben!

Úvod do regrese s knihovnou statsmodels v Pythonu

Preparing Video For Download...