Voller Code für dieses Beispiel am Ende dieses Beitrags.

Eine a number of Regression wird verwendet, wenn Ihre Antwortvariable y kontinuierlich ist und Sie mindestens Ok -Kovariaten oder unabhängige Variablen haben, die linear damit korrelieren. Die Daten sind aus der Kind:

(Y₁, x₁),…, (yᵢ, xᵢ),…, (yₙ, xₙ)

wobei xᵢ = (xᵢ₁,…, xᵢₖ) ein Vektor von Kovariaten ist und n die Anzahl der Beobachtungen. Hier ist XI der Vektor der ok -kovariaten Werte für die ITH -Beobachtung.

Die Daten verstehen

Stellen Sie sich das folgende Szenario vor:

Sie gerne laufen und verfolgen Ihre Leistung, indem Sie die Distanz aufzeichnen, die Sie jeden Tag ausführen. Über 100 aufeinanderfolgende Tage sammeln Sie vier Informationen:

  • Die Entfernung, die Sie laufen,
  • Die Anzahl der Stunden, die Sie verbracht haben,
  • Die Anzahl der Stunden, die du letzte Nacht geschlafen hast,
  • Und die Anzahl der Stunden, in denen Sie gearbeitet haben

Jetzt, am 101. Tag, haben Sie alles aufgenommen außer die Entfernung, die du gelaufen bist. Sie möchten diesen fehlenden Wert anhand der Informationen, die Sie haben, schätzen: Die Anzahl der Stunden, die Sie verbracht haben, die Anzahl der Stunden, die Sie in der Nacht zuvor geschlafen haben, und die Anzahl der Stunden, die Sie an diesem Tag gearbeitet haben.

Dazu können Sie sich auf die Daten aus den letzten 100 Tagen verlassen, die das Formular annehmen:

(Y₁, x₁),…, (yᵢ, xᵢ),…, (y₁₀₀, x₁₀₀)

Hier, jeweils Yᵢ Ist die Entfernung, die Sie am Tag gelaufen sind ichund jeder kovariate Vektor Xᵢ = (xᵢ₁, xᵢ₂, xᵢ₃) entspricht:

  • Xᵢ₁: Anzahl der Stunden, die verbracht haben,
  • Xᵢ₂: Anzahl der Stunden in der vergangenen Nacht geschlafen,
  • Xᵢ₃: Anzahl der Arbeitsstunden an diesem Tag.

Der Index i = 1,…, 100 bezieht sich auf die 100 Tage mit vollständigen Daten. Mit diesem Datensatz können Sie nun ein mehrfach lineares Regressionsmodell anpassen, um die fehlende Antwortvariable für Tag 101 abzuschätzen.

Spezifikation des Modells

Wenn wir die lineare Beziehung zwischen der Antwortvariablen und den Kovariaten annehmen, die Sie mit der Pearson -Korrelation messen können, können wir das Modell als:

Spezifikation des linearen Regressionsmodells

für i = 1,…, n wo e (ϵᵢ | xᵢ₁,…, xᵢₖ). Um den Abfangen zu berücksichtigen, wird die erste Variable auf Xᵢ₁ = 1, für i = 1,…, n. Um den Koeffizienten abzuschätzen, wird das Modell in Matrixnotation ausgedrückt.

Ergebnisvariable.

Und die Kovariaten werden mit:

X ist das Designmatrix (mit einem Abfang- und ok -Kovariaten)
β ist ein Säulenvektor von Koeffizienten, der im linearen Regressionsmodell verwendet wird. ε ist ein Spaltenvektor mit zufälligen Fehlerbegriffen, eine für jede Beobachtung.

Dann können wir das Modell als:

Y = xβ + ε

Schätzung der Koeffizienten

Unter der Annahme, dass die (ok+1)*(ok+1) Matrix invertierbar ist, ist die Kind der Schätzung der kleinsten Quadrate angegeben durch:

Die Schätzung der geringsten Quadrate von β.

Wir können die Schätzung der Regressionsfunktion, eine unvoreingenommene Schätzung von σ² und ein ungefähres 1 -α -Konfidenzintervall für βⱼ ableiten:

  • Schätzung der Regressionsfunktion: r (x) = ∑ⱼ₌₁ᵏ βⱼ xⱼ
  • σ̂² = (1 / (n – ok)) × ∑ᵢ₌₁ⁿ ε̂ᵢ² wobei ϵ̂ = y – xβ̂ der Vektor der Residuen ist.
  • Und β̂ⱼ ± Tₙ₋ₖ, ₁₋α⁄₂ × SE (β̂ⱼ) ist ungefähr (1 – α) Konfidenzintervall. Wobei SE (β̂ⱼ) das jth -diagonale Aspect der Matrix σ̂² (xᵀ x) ⁻¹ ist

Beispiel für die Anwendung

Da wir die Daten unserer laufenden Leistung nicht aufgezeichnet haben, werden wir 1960 einen Kriminalitätsdatensatz aus 47 Bundesstaaten verwenden Hier. Bevor wir zu einer linearen Regression passen, müssen wir viele Schritte befolgen.

Verständnis verschiedener Variablen der Daten.

Die ersten 9 Beobachtungen der Daten sind gegeben durch:

 R	   Age	S	Ed	Ex0	Ex1	LF	M	N	NW	U1	U2	W	X
79.1	151	1	91	58	56	510	950	33	301	108	41	394	261
163.5	143	0	113	103	95	583	1012 13	102	96	36	557	194
57.8	142	1	89	45	44	533	969	18	219	94	33	318	250
196.9	136	0	121	149	141	577	994	157	80	102	39	673	167
123.4	141	0	121	109	101	591	985	18	30	91	20	578	174
68.2	121	0	110	118	115	547	964	25	44	84	29	689	126
96.3	127	1	111	82	79	519	982	4	139	97	38	620	168
155.5	131	1	109	115	109	542	969	50	179	79	35	472	206
85.6	157	1	90	65	62	553	955	39	286	81	28	421	239

Die Daten haben 14 kontinuierliche Variablen (die Antwortvariable R, die 12 Prädiktorvariablen und eine kategoriale Variable S):

  1. R: Kriminalitätsrate: Anzahl der Straftaten, die der Polizei professional Million Bevölkerung gemeldet haben
  2. Alter: Die Anzahl der Männer im Alter von 14 bis 24 Jahren professional 1000 Bevölkerung
  3. S: Indikatorvariable für südliche Zustände (0 = Nein, 1 = Ja)
  4. ED: Mittelwert der Schuljahre x 10 für Personen im Alter von 25 Jahren oder älter
  5. Ex0: 1960 Professional -Kopf -Ausgaben für die Polizei durch staatliche und lokale Regierung
  6. EX1: 1959 Professional -Kopf -Ausgaben für die Polizei durch staatliche und örtliche Regierung
  7. LF: Erwerbsbeteiligungsrate professional 1000 zivile städtische Männer im Alter von 14 bis 24 Jahren
  8. M: Die Anzahl der Männer professional 1000 Frauen
  9. N: Staatsbevölkerungsgröße in hunderttausenden
  10. NW: Die Anzahl der Nicht-Weiße professional 1000 Bevölkerung
  11. U1: Arbeitslosenquote von städtischen Männern professional 1000 Alter von 14 bis 24 Jahren
  12. U2: Arbeitslosenquote von städtischen Männern professional 1000 Alter von 35 bis 39 Jahren
  13. W: mittlerer Wert von übertragbaren Waren und Vermögenswerten oder Familieneinkommen in Zehn $
  14. X: Die Anzahl der Familien professional 1000 verdiente unter 1/2 das Durchschnittseinkommen

Die Daten haben keine fehlenden Werte.

Grafische Analyse der Beziehung zwischen den Kovariaten x und der Antwortvariablen y

Grafische Analyse der Beziehung zwischen erklärenden Variablen und der Antwortvariablen ist ein Schritt bei der linearen Regression.

Es hilft, lineare Traits zu visualisieren, Anomalien zu erkennen und die Relevanz von Variablen vor dem Erstellen eines Modells zu bewerten.

Boxplots und Streudiagramme mit angepassten linearen Regressionsleitungen veranschaulichen den Pattern zwischen jeder Variablen und R.

Einige Variablen korrelieren positiv mit der Kriminalitätsrate, während andere negativ korreliert sind.

Zum Beispiel beobachten wir eine starke optimistic Beziehung zwischen R (der Kriminalitätsrate) und Ex1.

Im Gegensatz dazu scheint das Alter negativ mit der Kriminalität korreliert zu sein.

Schließlich legt der Boxplot der binären Variablen (anzeigen Area: Nord oder Süd) nahe, dass die Kriminalitätsrate zwischen den beiden Regionen relativ ähnlich ist. Dann können wir die Korrelationsmatrix analysieren.

Heatmap der Pearson -Korrelationsmatrix

Die Korrelationsmatrix ermöglicht es uns, die Stärke der Beziehung zwischen Variablen zu untersuchen. Während die Pearson -Korrelation üblicherweise zur Messung linearer Beziehungen verwendet wird, die Spearman -Korrelation ist angemessener, wenn wir monotonische, potenziell nichtlineare Beziehungen zwischen Variablen erfassen wollen.

In dieser Analyse werden wir die Spearman-Korrelation verwenden, um solche nichtlinearen Assoziationen besser zu berücksichtigen.

A Wärmemap der Korrelationsmatrix in Python

Die erste Zeile der Korrelationsmatrix zeigt die Stärke der Beziehung zwischen den einzelnen Kovariaten und der Antwortvariablen R.

Beispielsweise zeigen EX0 und EX1 eine Korrelation von mehr als 60% mit R, was auf eine starke Assoziation hinweist. Diese Variablen scheinen gute Prädiktoren für die Kriminalitätsrate zu sein.

Da die Korrelation zwischen Ex0 und EX1 jedoch nahezu perfekt ist, vermitteln sie wahrscheinlich ähnliche Informationen. Um Redundanz zu vermeiden, können wir nur einen von ihnen auswählen, vorzugsweise die mit der stärksten Korrelation mit R.

Wenn mehrere Variablen sind stark miteinander korreliert (zum Beispiel eine Korrelation von 60%)Sie neigen dazu, redundante Informationen zu tragen. In solchen Fällen behalten wir nur einen von ihnen auf – derjenige, der am stärksten mit der Antwortvariablen R korreliert. Dies ermöglicht es uns, die Multikollinearität zu reduzieren.

Diese Übung ermöglicht es uns, diese Variablen auszuwählen: (‚ex1‘, ‚lf‘, ‚m‘, ’n‘, ’nW‘, ‚u2‘).

Untersuchung der Multikollinearität unter Verwendung des VIF (Varianzinflationsfaktoren)

Vor der Anpassung der logistischen Regression ist es wichtig, die Multikollinearität zu untersuchen.

Wenn die Korrelation zwischen Prädiktoren besteht, nehmen die Standardfehler der Koeffizientenschätzungen zu, was zu einer Inflation ihrer Varianzen führt. Der Varianzinflationsfaktor (VIF) ist ein diagnostisches Instrument, mit dem die Varianz des Koeffizienten eines Prädiktors aufgrund von Multikollinearität aufgeblasen wird, und er wird typischerweise in der Regressionsausgabe unter einer „VIF“ -Säule bereitgestellt.

VIF -Interpretation

Dieser VIF wird für jeden Prädiktor im Modell berechnet. Der Ansatz besteht darin, die I-Th-Prädiktorvariable gegen alle anderen Prädiktoren zurückzugewinnen. Wir erhalten dann Rᵢ², mit dem das VIF unter Verwendung der Formel berechnet werden kann:

Der VIF der Ith -Variablen

Die folgende Tabelle zeigt die VIF -Werte für die sechs verbleibenden Variablen, die alle unter 5 liegen. Dies zeigt, dass Multikollinearität kein Downside darstellt, und wir können mit dem linearen Regressionsmodell fortfahren.

Der VIF jeder Variablen liegt über 5.

Anpassung einer linearen Regression auf sechs Variablen

Wenn wir eine lineare Regression der Kriminalitätsrate auf 10 Variablen anpassen, erhalten wir Folgendes:

Ausgabe der multiplen linearen Regressionsanalyse. Der entsprechende Code ist im Anhang bereitgestellt.

Diagnose von Residuen

Vor der Interpretation der Regressionsergebnisse müssen wir zunächst die Qualität der Residuen bewerten, insbesondere durch Überprüfung auf Autokorrelation, Homoskedastizität (konstante Varianz) und Normalität. Die Diagnose von Residuen wird in der folgenden Tabelle angegeben:

Diagnose der Residuen. Komm zur Zusammenfassung der Regression
  • Der Durbin-Watson ~ 2 zeigt keine Autokorrelation in Residuen an.
  • Vom Omnibus bis zur Kurtosis zeigen alle Werte, dass die Residuen symmetrisch sind und eine Normalverteilung aufweisen.
  • Die Zahl niedriger Zustandszahl (3.06) bestätigt, dass unter den Prädiktoren keine Multikollinearität besteht.

Hauptpunkte, an die man sich erinnern sollte

Wir können auch die Gesamtqualität des Modells anhand von Indikatoren wie R-Quadatoren und F-Statistik bewerten, die in diesem Fall zufriedenstellende Ergebnisse zeigen. (Weitere Informationen finden Sie im Anhang.)

Wir können jetzt die Regressionskoeffizienten aus statistischer Sicht interpretieren.
Wir schließen absichtlich jede geschäftsspezifische Interpretation der Ergebnisse aus.
Das Ziel dieser Analyse ist es, einige einfache und wesentliche Schritte zur Modellierung eines Issues mithilfe einer multiplen linearen Regression zu veranschaulichen.

Bei 5% Signifikanzniveau sind zwei Koeffizienten statistisch signifikant: EX1 und NW.

Dies ist nicht überraschend, da es sich um die beiden Variablen handelte, die eine Korrelation von mehr als 40% mit der Antwortvariablen R zeigten.

Dieser Beitrag gibt Ihnen einige Richtlinien, um eine lineare Regression durchzuführen:

  • Es ist wichtig zu überprüfen Linearität durch grafische Analyse und um die zu untersuchen Korrelation zwischen der Antwortvariablen und den Prädiktoren.
  • Die Untersuchung von Korrelationen zwischen Variablen hilft, zu reduzieren Multikollinearität und unterstützt Variable Auswahl.
  • Wenn zwei Prädiktoren stark korreliert sind, können sie vermitteln redundante Informationen. In solchen Fällen können Sie die aufbewahren, die ist stärker korreliert mit der Reaktionoder – basierend auf Area -Experience – die mit größeren Geschäftsrelevanz oder Praktische Interpretierbarkeit.
  • Der Varianzinflationsfaktor (VIF) ist ein nützliches Instrument zur Quantifizierung und Bewertung der Multikollinearität.
  • Vor der statistischen Interpretation der Modellkoeffizienten ist es wichtig, die Autokorrelation, Normalität und Homoskedastizität der Residuen zu überprüfen, um sicherzustellen, dass die Modellannahmen erfüllt sind.

Während diese Analyse wertvolle Erkenntnisse liefert, hat sie auch bestimmte Einschränkungen.

Das Fehlen fehlender Werte im Datensatz vereinfacht die Studie, dies ist jedoch in realen Szenarien selten der Fall.

Wenn Sie a bauen PrädiktivmodellEs ist wichtig, dass es wichtig ist Teilen Sie die Daten hinein AusbildungAnwesend Testenund möglicherweise eine OPT-of-Time-Validierungssatz um eine robuste Bewertung zu gewährleisten.

Für Variable AuswahlTechniken wie z. schrittweise Auswahl und andere Merkmalsauswahlmethoden können angewendet werden.

Beim Vergleich mehrerer Modelle ist es wichtig, geeignet zu definieren Leistungsmetriken.

Bei der linearen Regression umfassen häufig verwendete Metriken die Mittlerer absoluter Fehler (MAE) und die Mittlerer quadratischer Fehler (MSE).

Bildnachweis

Alle Bilder und Visualisierungen in diesem Artikel wurden vom Autor unter Verwendung von Python (Pandas, Matplotlib, Seeborn und Plotly) und Excel erstellt, sofern nicht anders angegeben.

Referenzen

Wasserman, L. (2013). Alle Statistiken: ein prägnanter Kurs in statistischer Inferenz. Springer Science & Enterprise Media.

Daten & Lizenzierung

Der in diesem Artikel verwendete Datensatz enthält 1960 kriminelle und demografische Statistiken für 47 US-Bundesstaaten.
Es stammt aus dem UCR -Programm (Uniform Crime Reporting) des FBI und den zusätzlichen Quellen der US -Regierung.

Als Arbeit in der US -Regierung sind die Daten unter 17 US -Code § 105 öffentlich zugänglich und können ohne Einschränkung frei zu verwenden, zu teilen und sich zu reproduzieren.

Quellen:

Codes

Daten importieren

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# Load the dataset
df = pd.read_csv('information/Multiple_Regression_Dataset.csv')
df.head()

Visuelle Analyse der Variablen

Create a brand new determine

# Extract response variable and covariates
response = 'R'
covariates = (col for col in df.columns if col != response)

fig, axes = plt.subplots(nrows=4, ncols=4, figsize=(20, 18))
axes = axes.flatten()

# Plot boxplot for binary variable 'S'
sns.boxplot(information=df, x='S', y='R', ax=axes(0))
axes(0).set_title('Boxplot of R by S')
axes(0).set_xlabel('S')
axes(0).set_ylabel('R')

# Plot regression strains for all different covariates
plot_index = 1
for cov in covariates:
    if cov != 'S':
        sns.regplot(information=df, x=cov, y='R', ax=axes(plot_index), scatter=True, line_kws={"shade": "pink"})
        axes(plot_index).set_title(f'{cov} vs R')
        axes(plot_index).set_xlabel(cov)
        axes(plot_index).set_ylabel('R')
        plot_index += 1

# Cover unused subplots
for i in vary(plot_index, len(axes)):
    fig.delaxes(axes(i))

fig.tight_layout()
plt.present()

Analyse der Korrelation zwischen Variablen

spearman_corr = df.corr(methodology='spearman')
plt.determine(figsize=(12, 10))
sns.heatmap(spearman_corr, annot=True, cmap="coolwarm", fmt=".2f", linewidths=0.5)
plt.title("Correlation Matrix Heatmap")
plt.present()

Filterprädiktoren mit hoher Interkorrelation (ρ> 0,6)

# Step 2: Correlation of every variable with response R
spearman_corr_with_R = spearman_corr('R').drop('R')  # exclude R-R

# Step 3: Establish pairs of covariates with robust inter-correlation (e.g., > 0.9)
strong_pairs = ()
threshold = 0.6
covariates = spearman_corr_with_R.index

for i, var1 in enumerate(covariates):
    for var2 in covariates(i+1:):
        if abs(spearman_corr.loc(var1, var2)) > threshold:
            strong_pairs.append((var1, var2))

# Step 4: From every correlated pair, preserve solely the variable most correlated with R
to_keep = set()
to_discard = set()

for var1, var2 in strong_pairs:
    if abs(spearman_corr_with_R(var1)) >= abs(spearman_corr_with_R(var2)):
        to_keep.add(var1)
        to_discard.add(var2)
    else:
        to_keep.add(var2)
        to_discard.add(var1)

# Remaining choice: all covariates excluding those to discard resulting from redundancy
final_selected_variables = (var for var in covariates if var not in to_discard)

final_selected_variables

Analyse der Multikollinearität mit VIF

from statsmodels.stats.outliers_influence import variance_inflation_factor
from statsmodels.instruments.instruments import add_constant
from sklearn.preprocessing import StandardScaler

X = df(final_selected_variables)  

X_with_const = add_constant(X)  

vif_data = pd.DataFrame()
vif_data("variable") = X_with_const.columns
vif_data("VIF") = (variance_inflation_factor(X_with_const.values, i)
                   for i in vary(X_with_const.form(1)))

vif_data = vif_data(vif_data("variable") != "const")

print(vif_data)

Machen Sie nach der Standardisierung ein lineares Regressionsmodell auf sechs Variablen, ohne die Daten in Zug und Check aufzuteilen

from sklearn.preprocessing import StandardScaler
from statsmodels.api import OLS, add_constant
import pandas as pd

# Variables
X = df(final_selected_variables)
y = df('R')

scaler = StandardScaler()
X_scaled_vars = scaler.fit_transform(X)

X_scaled_df = pd.DataFrame(X_scaled_vars, columns=final_selected_variables)

X_scaled_df = add_constant(X_scaled_df)

mannequin = OLS(y, X_scaled_df).match()
print(mannequin.abstract())
Bild vom Autor: OLS -Regressionsergebnisse

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert