Analiza R-Squared al unei regresii
R-squared măsoară cât de bine se potrivesc datele cu dreapta de regresie, prin urmare R-squared dintr-o regresie simplă este legat de corelația dintre cele două variabile. Mai precis, magnitudinea corelației este rădăcina pătrată a lui R-squared, iar semnul corelației este semnul coeficientului de regresie.
În acest exercițiu, vei începe să folosești pachetul statistic statsmodels, care realizează o mare parte din modelarea statistică și testarea regăsite în R și în pachete software precum SAS și MATLAB.
Vei prelua două serii, x și y, vei calcula corelația dintre ele, apoi vei regresa y față de x folosind funcția OLS(y,x) din biblioteca statsmodels.api (reține că variabila dependentă y este primul argument). Majoritatea regresiilor liniare includ un termen constant, adică interceptul (\(\small \alpha\) din regresia \(\small y_t=\alpha + \beta x_t + \epsilon_t\)). Pentru a include un termen constant cu funcția OLS(), trebuie să adaugi o coloană de 1 în partea dreaptă a regresiei.
Modulul statsmodels.api a fost importat pentru tine ca sm.
Acest exercițiu face parte din cursul
Analiza seriilor de timp în Python
Instrucțiuni pentru exercițiu
- Calculează corelația dintre
xșiyfolosind metoda.corr(). - Rulează o regresie:
- Mai întâi, convertește seria
xîntr-un DataFramedfx. - Adaugă o constantă folosind
sm.add_constant()și atribuie rezultatul variabileidfx1. - Regresează
yfață dedfx1folosindsm.OLS().fit().
- Mai întâi, convertește seria
- Afișează rezultatele regresiei și compară R-squared cu corelația.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# Import the statsmodels module
import statsmodels.api as sm
# Compute correlation of x and y
correlation = ___
print("The correlation between x and y is %4.2f" %(correlation))
# Convert the Series x to a DataFrame and name the column x
dfx = pd.DataFrame(x, columns=['x'])
# Add a constant to the DataFrame dfx
dfx1 = sm.add_constant(___)
# Regress y on dfx1
result = sm.OLS(___, ___).fit()
# Print out the results and look at the relationship between R-squared and the correlation above
print(result.summary())