PL170120201417
- dept wydział Num ID działu Standardowe numery dla działów, z wyjątkiem Korsyki (200).
- Region Region Char (1) Region Region Francji („N” = „Północ”, „S” = „Południe”, „E” = „Wschód”, „W” = „Zachód”, „C” = „Środek”). Korsyka ma kod „” (brak, NA)
- Department Departament Char (25) Nazwa departamentu Nazwy departamentów są nazywane zgodnie z użyciem w 1830 roku. Zobacz depts.txt, aby uzyskać alternatywne kodowanie nazw departamentów.
- Crime_pers Crime_pers Num Muzyka pop. za przestępstwa przeciwko osobom Źródło: A2 (Compte général, 1825-1830)
- Crime_prop Crime_prop Num Muzyka pop. za przestępstwo przeciwko mieniu Źródło: A2 (Compte général, 1825-1830)
- Literacy Alfabetyzacja Num Procent odczytu i zapisu Procent poborowych wojskowych, którzy potrafią czytać i pisać Źródło: A2
- Donations Darowizny Num Darowizny dla biednych Źródło: A2 (Bulletin des lois)
- Infants Niemowlęta Num Muzyka pop. na nielegalne urodzenie Źródło: A2 (Bureaau des Longitudes, 1817-1821)
- Suicides Samobójstwa Num Muzyka pop. na samobójstwo Źródło: A2 (Compte général, 1827-1830)
- MainCity Główne Miasto Char (5) Rozmiar głównego miasta Rozmiar głównego miasta („1: Sm”, „2: Med”, „3: Lg”), stosowany jako surogat dla gęstości zalewania. Duże odnosi się do górnej 10, małe do dolnej 10; wszystkie pozostałe są sklasyfikowane jako średnie. Źródło: A1
- Wealth Bogactwo Ranga Podatek per capita od nieruchomości osobistych Indeks rankingowy oparty na podatkach od nieruchomości osobistych i ruchomych na mieszkańca Źródło: A1
- Commerce Handel Ranga Handel i przemysł Handel i przemysł mierzony rangą liczby patentów / populacji Źródło: A1
- Clergy Kler Ranga Dystrybucja duchowieństwa Dystrybucja duchowieństwa mierzona stopniem liczby księży katolickich w czynnej służbie / ludności Źródło: A1 (Almanach officiel du clergy, 1829)
- Crime_parents Kryminalni rodzice Ranga Przestępstwa przeciwko rodzicom Przestępstwa przeciwko rodzicom, mierzone stopniem stosunku przestępstw przeciwko rodzicom do wszystkich przestępstw – Średnia z lat 1825–1830 Źródło: A1 (Compte général)
- Infanticide Dzieciobójca Ranga Liczba dzieciobójstw na jednego mieszkańca Wskaźnik wskaźnikowy liczby dzieciobójstw do liczby ludności – Średnia z lat 1825–1830 Źródło: A1 (Compte général)
- Donation_clergy Duchowieństwo Ranga Darowizny dla duchowieństwa Wskaźniki rankingowe liczby zapisów i darowizn między żywymi dla ludności – Średnia dla lat 1815–1824 Źródło: A1 (Bull. Des lois, ordunn. D’autorization)
- Lottery Loteria Ranga Zakład per capita w Royal Lottery Ranking rankingowy wpływów z zakładów loterii królewskiej do liczby ludności — Średnia z lat 1822–1826 Źródło: A1 (Compte rendus par le ministre des finances)
- Desertion Dezercja Ranga Dezercja wojskowa Desercja wojskowa, stosunek liczby młodych żołnierzy oskarżonych o dezercję do siły kontyngentu wojskowego, minus deficyt spowodowany niewystarczalnością dostępnych polan – średnia z lat 1825–1827. Źródło: A1 (Compte du ministere du guerre, 1829 etat V)
- Instruction Instrukcja Ranga Rankingi instrukcji zapisane z mapy instrukcji Guerry’ego. Uwaga: jest to odwrotnie związane z umiejętnością czytania i pisania (zgodnie z definicją tutaj).
- Prostitutes Prostytutki Num Prostytutki w Paryżu Liczba prostytutek zarejestrowanych w Paryżu w latach 1816–1834, sklasyfikowanych według departamentu ich urodzenia Źródło: Parent-Duchatelet (1836), De la prostitution en Paris
- Distance Dystans Num Odległość do Paryża (km) Odległość każdego centroidu departamentu do centroidu Sekwany (Paryż) Źródło: obliczone na podstawie centroidów departamentów
- Area Powierzchnia Num Obszar (1000 km^2) Źródło: Angeville (1836)
- Pop1831 Pop1831 Num 1831 populacja ludności w 1831 roku, pochodzi z Angeville (1836), Essai sur la Statistique de la Populacja français w 1000s.
import pandas as pd
df = pd.read_csv('c:/1/Guerry.csv', index_col='Department')
del df['Unnamed: 0']
df.head(4)
import matplotlib.pyplot as plt
CORREL = df.corr().sort_values('Wealth')
plt.figure(figsize=(10,6))
CORREL['Wealth'].plot(kind='barh', color='red')
plt.title('Korelacja ze zmienną wynikową', fontsize=20)
plt.xlabel('Poziom korelacji')
plt.ylabel('Zmienne nezależne ciągłe')
Sprawdziliśmy już w części drugiej kompletność danych oraz format zmiennych dla zbioru: Guerry.csv.
Teraz będę budował regresjię wieloczynnikową.¶
- Zmienną zależną będzie poziom lokalnej zamożności mieszkańców (‘Wealth’)
- zmiennymi opisującymi będą: prostytucja (Prostitutes) – wskazująca na istnienie lokalnego nadmiaru siły roboczej i braku zajęcia, poziom darowizn na kościół (‘Donation_clergy’), oraz poziom lokalnego przemysłu i handlu (‘Commerce’).
from statsmodels.formula.api import ols
import statsmodels.api as sm
X = df[['Commerce','Prostitutes','Donation_clergy']]
y = df['Wealth']
model = sm.OLS(y, sm.add_constant(X))
model_fit = model.fit()
model_fit.summary()
Teraz analizujemy wartości odstające:
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(18,13))
fig = sm.graphics.influence_plot(model_fit, ax=ax, criterion="cooks")
plt.axhline(y=0, color='green', linestyle='-', lw=0.6)
plt.axhline(y=2, color='r', linestyle='--', lw=0.6)
plt.axhline(y=-2, color='r', linestyle='--', lw=0.6)
plt.axvline(x= 0.2, color = 'r', linestyle='--', lw=0.6)
plt.axvline(x= 0.014, color = 'r', linestyle='--', lw=0.6)
Eliminujemy Seine jako miasto bardzo zniekształacające model. Problem tego miasta można zbadać przy okazji innych badań. Wykres wpływów jest bardzo dobrym narzędziem do wyszukiwania anomalii w danych.
Teraz eliminujemy miasto Seine z danych i robimy model od nowa.
df=df.drop(['Seine','Seine-et-Oise'],axis=0)
X = df[['Commerce','Prostitutes','Donation_clergy']]
y = df['Wealth']
model = sm.OLS(y, sm.add_constant(X))
model_fit = model.fit()
model_fit.summary()
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(18,13))
fig = sm.graphics.influence_plot(model_fit, ax=ax, criterion="cooks")
plt.axhline(y=0, color='green', linestyle='-', lw=0.6)
plt.axhline(y=2, color='r', linestyle='--', lw=0.6)
plt.axhline(y=-2, color='r', linestyle='--', lw=0.6)
plt.axvline(x= 0.2, color = 'r', linestyle='--', lw=0.6)
plt.axvline(x= 0.014, color = 'r', linestyle='--', lw=0.6)
Partial Regression Plots (Duncan plot)¶
Ponieważ wykonujemy regresje wielowymiarowe, nie możemy po prostu patrzeć na poszczególne wykresy dwuwymiarowe, aby rozróżnić relacje. Zamiast tego chcemy spojrzeć na zależność zmiennej zależnej i zmiennych niezależnych od innych zmiennych niezależnych. Możemy to zrobić za pomocą wykresów Partial Regression Plots zwanych również added variable plots.
fig, ax = plt.subplots(figsize=(12,8))
fig = sm.graphics.plot_partregress("Wealth", "Commerce", ["Commerce", "Donation_clergy"], data=df, ax=ax)
Na powyższym rysunku pokazano jaka jest zależność jakości gospodarki (na osi x) do poziomu bogactwa (na osi y) w kontekście darowizn na kościół.
Zauważmy, że odstają te miejscowości, które mają dużą odległość na wykresie wpływów: Lot-et-Garonne, Bouches-du-Rhone, Ardache, Vosges.
fig, ax = plt.subplots(figsize=(12,8))
fig = sm.graphics.plot_partregress("Wealth", "Commerce", ["Commerce", "Prostitutes"], data=df, ax=ax)
Tym razem analizujemy zależność jakości gospodarki (na osi x) do poziomu bogactwa (na osi y) w kontekście prostytucji (czyli poziomu emigracji kobiet do Paryża). Zauważmy, że odstają znowu te miejscowości, które mają dużą odległość na wykresie wpływów Cooka: Lot-et-Garonne, Bouches-du-Rhone (jako biedne), Ardache, Vosges (jako bogate).
Wykres Partial Regression Plots jest doskonałym narzędziem wyszukującym anomalie w danych.
Warto zauważyć, że mający dużą dzwignię na wykresie wpływów: Seine-inferieure na wykresie Duncan plot w kontekście darowizn na kościuł był jako bardzo nisko (biedny) w kontekście prostytucji ma zupełnie inne położenie. Miejscowość ta jest napewno kolejną anomalią.
Jak wyglądał by wykres Partial Regression Plots gdyby analizować tylko poziom ‘Prostitutes’ bez kontekstu na ‘Commerce’?¶
fix, ax = plt.subplots(figsize=(12,14))
fig = sm.graphics.plot_partregress("Wealth", "Commerce", ["Prostitutes"], data=df, ax=ax)