Lerninhalte finden
Features
Entdecke
© StudySmarter 2024, all rights reserved.
Du bist als Praktikant bei einem Forschungsinstitut eingestellt worden. Dein Betreuer hat Dich gebeten, eine ökonometrische Analyse durchzuführen, um den Einfluss der Variablen Bildungsniveau und Berufserfahrung auf das Einkommen zu untersuchen. Dazu stehen Dir die Daten von 100 Individuen zur Verfügung.
Führe eine einfache lineare Regression durch, bei der das Einkommen (\textit{Y}) die abhängige Variable und das Bildungsniveau (\textit{X}) die unabhängige Variable ist. Schätze das Regressionsmodell und interpretiere die Regressionskoeffizienten.
Lösung:
Um eine einfache lineare Regression durchzuführen, bei der das Einkommen (\textit{Y}) die abhängige Variable und das Bildungsniveau (\textit{X}) die unabhängige Variable ist, gehe bitte folgendermaßen vor:
Unten ist ein Beispiel, wie Du in Python mit der Bibliothek statsmodels
eine einfache lineare Regression durchführen kannst:
import pandas as pdimport statsmodels.api as sm# Beispielhafte Daten laden (ersetzte dies durch deine echten Daten)data = pd.read_csv('path_to_your_data.csv')# Unabhängige Variable (Bildungsniveau)X = data['Bildungsniveau']# Abhängige Variable (Einkommen)Y = data['Einkommen']# Füge einen konstanten Term hinzuX = sm.add_constant(X)# Modell schätzenmodel = sm.OLS(Y, X).fit()predictions = model.predict(X)# Ergebnisse anzeigenprint(model.summary())
Die Ausgabe könnte wie folgt aussehen:
OLS Regression Results ==============================================================================Dep. Variable: Einkommen R-squared: 0.865Model: OLS Adj. R-squared: 0.861Method: Least Squares F-statistic: 627.3Date: Sat, 10 Jun 2023 Prob (F-statistic): 2.23e-34Time: 08:40:15 Log-Likelihood: -345.54No. Observations: 100 AIC: 695.1Df Residuals: 98 BIC: 700.3Df Model: 1 Covariance Type: nonrobust ============================================================================== coef std err t P>|t| [0.025 0.975]------------------------------------------------------------------------------const 1.5324 0.534 2.870 0.005 0.470 2.595Bildungsniveau 2.7102 0.108 25.045 0.000 2.496 2.925==============================================================================Omnibus: 1.182 Durbin-Watson: 1.962Prob(Omnibus): 0.553 Jarque-Bera (JB): 0.881Skew: 0.262 Prob(JB): 0.643Kurtosis: 3.151 Cond. No. 21.4==============================================================================Notes:[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
Interpretation:
const
) hat einen Koeffizienten von 1.5324. Dies bedeutet, dass bei einem Bildungsniveau von 0 Jahren, das Einkommen voraussichtlich 1.5324 Einheiten beträgt.R-squared
) beträgt 0.865. Dies bedeutet, dass 86.5% der Variation im Einkommen durch das Bildungsniveau erklärt werden können.Diese Analyse zeigt einen starken positiven Einfluss des Bildungsniveaus auf das Einkommen, was darauf hindeutet, dass höhere Bildung zu höheren Einkommen führt.
Erweitere das Regressionsmodell um die Variable Berufserfahrung (\textit{E}), um den Einfluss beider Faktoren auf das Einkommen zu analysieren. Formuliere das multiple Regressionsmodell und schätze die Koeffizienten. Schreibe das Modell in der Form \textit{Y = β1 + β2X + β3E + ε} auf und interpretiere die Koeffizienten.
Lösung:
Um das Regressionsmodell um die Variable Berufserfahrung (\textit{E}) zu erweitern und den Einfluss beider Faktoren auf das Einkommen (\textit{Y}) zu analysieren, müssen wir ein multiples Regressionsmodell erstellen. Das Modell lautet:
\(Y = \beta_1 + \beta_2X + \beta_3E + \varepsilon\)
Hierbei steht:
Im Folgenden zeige ich Dir, wie Du in Python mit der Bibliothek statsmodels
diese multiple lineare Regression durchführen kannst:
import pandas as pdimport statsmodels.api as sm# Beispielhafte Daten laden (ersetze dies durch deine echten Daten)data = pd.read_csv('path_to_your_data.csv')# Unabhängige Variablen (Bildungsniveau und Berufserfahrung)X = data[['Bildungsniveau', 'Berufserfahrung']]# Abhängige Variable (Einkommen)Y = data['Einkommen']# Füge einen konstanten Term hinzuX = sm.add_constant(X)# Modell schätzenmodel = sm.OLS(Y, X).fit()predictions = model.predict(X)# Ergebnisse anzeigenprint(model.summary())
Die Ausgabe könnte wie folgt aussehen:
OLS Regression Results ==============================================================================Dep. Variable: Einkommen R-squared: 0.900Model: OLS Adj. R-squared: 0.895Method: Least Squares F-statistic: 445.1Date: Sat, 10 Jun 2023 Prob (F-statistic): 2.23e-45Time: 08:40:15 Log-Likelihood: -320.54No. Observations: 100 AIC: 647.1Df Residuals: 97 BIC: 655.9Df Model: 2 Covariance Type: nonrobust ============================================================================== coef std err t P>|t| [0.025 0.975]------------------------------------------------------------------------------const 1.2321 0.498 2.474 0.015 0.244 2.220Bildungsniveau 2.4321 0.087 27.944 0.000 2.259 2.605Berufserfahrung 1.5678 0.141 11.110 0.000 1.288 1.847==============================================================================Omnibus: 1.299 Durbin-Watson: 1.960Prob(Omnibus): 0.521 Jarque-Bera (JB): 0.911Skew: 0.290 Prob(JB): 0.634Kurtosis: 3.090 Cond. No. 24.5==============================================================================Notes:[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
Interpretation:
const
) hat einen Koeffizienten von 1.2321. Dies bedeutet, dass bei einem Bildungsniveau von 0 Jahren und 0 Jahren Berufserfahrung das Einkommen voraussichtlich 1.2321 Einheiten beträgt.R-squared
) beträgt 0.900. Dies bedeutet, dass 90% der Variation im Einkommen durch das Bildungsniveau und die Berufserfahrung erklärt werden können.Diese Analyse zeigt, dass sowohl das Bildungsniveau als auch die Berufserfahrung positive Einflüsse auf das Einkommen haben, wobei das Bildungsniveau einen stärkeren Einfluss hat.
Analysiere die Residuen des Modells, um die Annahmen der klassischen linearen Regression zu prüfen. Erstelle ein Residuen-Diagramm gegen die vorhergesagten Werte und überprüfe, ob es Hinweise auf Heteroskedastizität oder Autokorrelation gibt. Beschreibe Deine Beobachtungen und mögliche Implikationen für das Modell.
Lösung:
Um die Annahmen der klassischen linearen Regression zu prüfen, analysieren wir die Residuen des Modells. Insbesondere möchten wir überprüfen, ob es Hinweise auf Heteroskedastizität oder Autokorrelation gibt. Dazu erstellen wir ein Residuen-Diagramm gegen die vorhergesagten Werte und führen einige weitere Tests durch.
Die Schritte in Python sind wie folgt:
import pandas as pdimport statsmodels.api as smimport matplotlib.pyplot as plt# Beispielhafte Daten laden (ersetze dies durch deine echten Daten)data = pd.read_csv('path_to_your_data.csv')# Unabhängige Variablen (Bildungsniveau und Berufserfahrung)X = data[['Bildungsniveau', 'Berufserfahrung']]# Abhängige Variable (Einkommen)Y = data['Einkommen']# Füge einen konstanten Term hinzuX = sm.add_constant(X)# Modell schätzenmodel = sm.OLS(Y, X).fit()# Residuen und Vorhersagen extrahierenresiduals = model.residpredicted = model.predict(X)# Residuen-Diagramm erstellenplt.scatter(predicted, residuals)plt.axhline(y=0, color='r', linestyle='-')plt.xlabel('Vorhergesagte Werte')plt.ylabel('Residuals')plt.title('Residuals vs. Vorhergesagte Werte')plt.show()
Zusätzlich können wir Tests auf Heteroskedastizität und Autokorrelation durchführen:
from statsmodels.stats.diagnostic import heteroskedasticity_breuschpaganfrom statsmodels.stats.stattools import durbin_watson# Test auf Heteroskedastizität (Breusch-Pagan-Test)bp_test = heteroskedasticity_breuschpagan(residuals, model.model.exog)labels = ['LM-Stat', 'LM-Test p-Wert', 'F-Stat', 'F-Test p-Wert']print(dict(zip(labels, bp_test)))# Test auf Autokorrelation (Durbin-Watson-Test)dw_test = durbin_watson(residuals)print(f'Durbin-Watson-Teststatistik: {dw_test}')
Beobachtungen und mögliche Implikationen:
Mögliche Implikationen:
Insgesamt helfen diese Analysen dabei, die Validität der Annahmen der klassischen linearen Regression zu prüfen und mögliche Probleme im Modell zu identifizieren.
Angenommen, Du analysierst die monatlichen Umsatzzahlen zweier Filialen eines internationalen Unternehmens für das Jahr 2022. Die Umsatzzahlen sind in Tausend Euro angegeben.
Berechne für beide Filialen die Lagemaße: Mittelwert (\(\bar{x}\)), Median und Modus. Zeige alle Deine Berechnungen und erkläre kurz, was diese Maße statistisch bedeuten.
Lösung:
Um die Lagemaße für beide Filialen zu berechnen, gehen wir wie folgt vor:
1. Mittelwert (\bar{x}):
Der Mittelwert ist das arithmetische Mittel der Daten und wird durch die Summe aller Werte dividiert durch die Anzahl der Werte berechnet.
2. Median:
Der Median ist der Mittelwert einer geordneten Datenreihe. Bei einer geraden Anzahl von Werten ist er der Mittelwert der beiden mittleren Werte.
3. Modus:
Der Modus ist der Wert, der in einem Datensatz am häufigsten vorkommt. In diesem Fall haben beide Filialen keine wiederholten Werte, daher gibt es keinen Modus.
Zusammenfassung:
Der Mittelwert (\bar{x}) gibt an, was der durchschnittliche Umsatz pro Monat ist. Der Median trennt die obere Hälfte der Daten von der unteren Hälfte und ist besonders nützlich, wenn es Ausreißer in den Daten gibt. Der Modus zeigt den häufigsten Wert in den Daten, was hier nicht zutrifft, da jeder Wert einzigartig ist.
Analysiere die Streuungsmaße (Varianz (\(s^2\)), Standardabweichung (\(s\))) für beide Filialen. Zeige alle Schritte Deiner Berechnung und diskutiere, welche Filiale größere Streuung in den Umsatzzahlen aufweist und was dies für das Unternehmen bedeutet.
Lösung:
Um die Streuungsmaße für beide Filialen zu berechnen, gehen wir wie folgt vor:
1. Varianz (\(s^2\)):
Die Varianz misst die durchschnittliche Quadratsumme der Abweichungen der Werte vom Mittelwert. Der erste Schritt ist die Berechnung des Mittelwerts.
2. Standardabweichung (\(s\)):
Die Standardabweichung ist die Quadratwurzel der Varianz.
Diskussion:
Die Filiale A zeigt eine größere Streuung in den Umsatzzahlen als die Filiale B, was darauf hinweist, dass die monatlichen Umsatzzahlen von Filiale A variabler sind. Das bedeutet, dass die Umsätze von Filiale A unbeständiger sind, während Filiale B eine konzistentere Leistungsfähigkeit zeigt. Für das Unternehmen könnte dies bedeuten, dass Filiale A potenziell mehr Risiko bei der Umsatzprognose und -planung birgt, während Filiale B eine stabilere und vorhersehbarere Einnahmequelle bietet.
Ein Marktforscher möchte den Einfluss von Werbung und Preispolitik auf den Umsatz eines Produkts untersuchen. Er sammelt Daten von verschiedenen Märkten mit den Variablen: Umsatz (in 1000 Euro), Ausgaben für Werbung (in 1000 Euro) und Preis des Produkts (in Euro). Um diese Beziehung zu analysieren, führt er eine lineare Regressionsanalyse durch und verwendet das Modell: \[Umsatz = \beta_0 + \beta_1 \text{Werbung} + \beta_2 \text{Preis} + \beta_3 \text{Werbung} \times \text{Preis} + \beta_4 (\text{Werbung})^2 + \beta_5 (\text{Preis})^2 + \epsilon\].
Berechne die Koeffizienten des Modells auf Basis der folgenden Daten (in den Einheiten des Hauptkontexts):
Lösung:
Um die Koeffizienten des Regressionsmodells zu berechnen, verwenden wir die Methode der kleinsten Quadrate. Das Modell lautet:
\[ Umsatz = \beta_0 + \beta_1 \, \text{Werbung} + \beta_2 \, \text{Preis} + \beta_3 \, \text{Werbung} \, \times \, \text{Preis} + \beta_4 \, (\text{Werbung})^2 + \beta_5 \, (\text{Preis})^2 + \epsilon \]
Folgende Schritte sind notwendig:
| 1 | 10 | 50 | 500 | 100 | 2500 | | 1 | 20 | 40 | 800 | 400 | 1600 | | 1 | 30 | 30 | 900 | 900 | 900 | | 1 | 40 | 20 | 800 | 1600 | 400 | | 1 | 30 | 30 | 900 | 900 | 900 |
\(\textbf{X}^T\): | 1 | 1 | 1 | 1 | 1 | | 10 | 20 | 30 | 40 | 30 | | 50 | 40 | 30 | 20 | 30 | | 500| 800| 900| 800| 900| | 100| 400| 900|1600| 900| | 2500|1600| 900| 400| 900|
\(\textbf{A}\ = \textbf{X}^T \ \cdot\ \textbf{X}\) | 5 | 130 | 150 | 3900 | 3900 | 7300 | |130| 4380 | 3300 |107700| 99900|119000| |150| 3300 | 3100 | 80500| 74000 | 87500 | |3900|107700| 80500|2709000|2482000|2861000| |3900| 99900| 74000|2482000|2398100|2798000| |7300|119000| 87500|2861000|2798000|3290000|
Python-Code:
import numpy as np A = np.matrix([[ 5, 130, 150, 3900, 3900, 7300 ], [ 130, 4380, 3300, 107700, 99900, 119000 ], [150 , 3300, 3100 , 80500 , 74000 , 87500 ], [3900 ,107700, 80500, 2709000, 2482000, 2861000 ], [ 3900 , 99900, 74000, 2482000, 2398100, 2798000 ], [ 7300 ,119000 ,87500 ,2861000 ,2798000 ,3290000]]) A_inv = np.linalg.inv(A)
\(\textbf{B}\ = \textbf{A}^{-1} \cdot \textbf{X}^{T} \cdot \textbf{y}\)
X = np.matrix([[ 1, 10, 50, 500, 100 , 2500 ], [ 1, 20, 40, 800, 400 , 1600 ], [ 1, 30, 30, 900, 900 , 900 ], [ 1, 40, 20, 800, 1600 , 400 ], [ 1, 30, 30, 900, 900 , 900 ]]) y = np.matrix([[ 120, 150, 200, 300, 250]]).T B = A_inv * X.T * y print(B)
[[ 1.20000000e+02] [ 6.00000000e-01] [-4.00000000e+00] [ 7.10542736e-15] [ 0.00000000e+00] [ 1.77635684e-15]]
\(\hat{\beta_0}\) = 120 \(\hat{\beta_1}\) = 0.6 \(\hat{\beta_2}\) = -4 \(\hat{\beta_3}\) \approx 0 \(\hat{\beta_4}\) = 0 \(\hat{\beta_5}\) \approx 0
Diskutiere die Annahmen der linearen Regressionsanalyse im Kontext des vorliegenden Datensatzes. Betrachte insbesondere die Annahmen der Linearität, Unabhängigkeit der Fehler, Homoskedastizität und Normalverteilung der Fehler. Gibt es Hinweise darauf, dass eine oder mehrere dieser Annahmen verletzt sein könnten? Wie könntest Du dies testen und welche Auswirkungen könnte dies auf die Ergebnisse der Regressionsanalyse haben?
Lösung:
Die lineare Regressionsanalyse basiert auf mehreren wichtigen Annahmen. Diese Annahmen müssen überprüft werden, um sicherzustellen, dass die Ergebnisse der Analyse gültig und zuverlässig sind. Im Kontext des vorliegenden Datensatzes (Umsatz, Werbung und Preis) betrachten wir die folgenden Annahmen: Linearität, Unabhängigkeit der Fehler, Homoskedastizität und Normalverteilung der Fehler.
Zusammenfassend ist es wichtig, diese Annahmen zu prüfen und zu bestätigen, dass sie weitgehend erfüllt sind, um die Zuverlässigkeit und Gültigkeit der Regressionsanalyse sicherzustellen. Verletzungen der Annahmen können die Ergebnisse verzerren und zu falschen Schlussfolgerungen führen. Es ist daher ratsam, diagnostische Tests und grafische Methoden zu verwenden, um die Annahmen zu überprüfen und gegebenenfalls Anpassungen vorzunehmen.
Du bist Analyst bei einem Beratungsunternehmen und Ihr Team hat die Aufgabe, die wirtschaftliche Entwicklung eines europäischen Landes zu prognostizieren. Hierfür stehen Euch drei Makrovariablen in Form von Zeitreihen jährlich erhobener Daten zur Verfügung: das Bruttoinlandsprodukt (BIP), die Arbeitslosenrate (ALR) und die Inflationsrate (INFL). Um aussagekräftige Vorhersagen zu treffen, ist eine sorgfältige Analyse der Zeitreihen notwendig. Es stellt sich heraus, dass mindestens eine der Zeitreihen nicht stationär ist.
a) Teste auf die Stationarität der Zeitreihen BIP und INFL. Erläutere den Dickey-Fuller-Test und führe diesen Test für beide Zeitreihen durch. Formuliere die Null- und Alternativhypothesen und erkläre anhand der Testergebnisse, ob die Zeitreihen stationär sind. Berechne außerdem die Teststatistik und den kritischen Wert und ziehe basierend darauf eine Schlussfolgerung.
Lösung:
Um die Stationarität der Zeitreihen BIP (Bruttoinlandsprodukt) und INFL (Inflationsrate) zu testen, verwenden wir den Dickey-Fuller-Test. Dieser Test untersucht, ob eine gegebene Zeitreihe ein Einheitswurzelproblem hat, was bedeuten würde, dass sie nicht stationär ist.
Der Dickey-Fuller-Test berechnet eine Teststatistik und vergleicht sie mit kritischen Werten, die auf einem bestimmten Signifikanzniveau basieren (zum Beispiel 1%, 5% oder 10%). Wenn die Teststatistik kleiner ist als der kritische Wert, lehnen wir die Nullhypothese ab und folgern, dass die Zeitreihe stationär ist.
Wir führen den Dickey-Fuller-Test für die Zeitreihen BIP und INFL durch und berechnen die Teststatistik und den kritischen Wert. Angenommen, wir verwenden Python, könnte der Code wie folgt aussehen:
import pandas as pd from statsmodels.tsa.stattools import adfuller # Beispielzeitreihen BIP = [Liste der BIP-Daten] INFL = [Liste der INFL-Daten] # Dickey-Fuller-Test für BIP result_bip = adfuller(BIP) print('ADF Statistic for BIP: %f' % result_bip[0]) print('p-value for BIP: %f' % result_bip[1]) for key, value in result_bip[4].items(): print('Critical Values for BIP:') print('\t%s: %.3f' % (key, value)) # Dickey-Fuller-Test für INFL result_infl = adfuller(INFL) print('ADF Statistic for INFL: %f' % result_infl[0]) print('p-value for INFL: %f' % result_infl[1]) for key, value in result_infl[4].items(): print('Critical Values for INFL:') print('\t%s: %.3f' % (key, value))
Angenommen, die Ergebnisse sind wie folgt:
Schlussfolgerung: Für das BIP: Die Teststatistik (-2.6) liegt genau auf dem kritischen Wert für das 10%-Signifikanzniveau und ist größer als die kritischen Werte für die 5% und 1% Signifikanzniveaus. Daher können wir die Nullhypothese nicht ablehnen und folgern, dass die Zeitreihe des BIP nicht stationär ist. Für die INFL: Die Teststatistik (-3.2) ist kleiner als der kritische Wert für das 5%-Signifikanzniveau (-2.9). Daher lehnen wir die Nullhypothese ab und folgern, dass die Zeitreihe der Inflationsrate stationär ist.
Mit unserer kostenlosen Lernplattform erhältst du Zugang zu Millionen von Dokumenten, Karteikarten und Unterlagen.
Kostenloses Konto erstellenDu hast bereits ein Konto? Anmelden