Come eseguire la regressione ols in r (con esempio)


La regressione dei minimi quadrati ordinari (OLS) è un metodo che ci consente di trovare una linea che meglio descrive la relazione tra una o più variabili predittive e una variabile di risposta .

Questo metodo ci permette di trovare la seguente equazione:

ŷ = b 0 + b 1 x

Oro:

  • ŷ : il valore di risposta stimato
  • b 0 : L’origine della retta di regressione
  • b 1 : La pendenza della retta di regressione

Questa equazione può aiutarci a comprendere la relazione tra il predittore e la variabile di risposta e può essere utilizzata per prevedere il valore di una variabile di risposta dato il valore della variabile predittore.

Il seguente esempio passo passo mostra come eseguire la regressione OLS in R.

Passaggio 1: creare i dati

Per questo esempio, creeremo un set di dati contenente le seguenti due variabili per 15 studenti:

  • Numero totale di ore studiate
  • Risultato dell’esame

Eseguiremo una regressione OLS, utilizzando le ore come variabile predittiva e il punteggio dell’esame come variabile di risposta.

Il codice seguente mostra come creare questo set di dati falso in R:

 #create dataset
df <- data. frame (hours=c(1, 2, 4, 5, 5, 6, 6, 7, 8, 10, 11, 11, 12, 12, 14),
                 score=c(64, 66, 76, 73, 74, 81, 83, 82, 80, 88, 84, 82, 91, 93, 89))

#view first six rows of dataset
head(df)

  hours score
1 1 64
2 2 66
3 4 76
4 5 73
5 5 74
6 6 81

Passaggio 2: visualizzare i dati

Prima di eseguire una regressione OLS, creiamo un grafico a dispersione per visualizzare la relazione tra ore e punteggio dell’esame:

 library (ggplot2)

#create scatterplot
ggplot(df, aes(x=hours, y=score)) +
  geom_point(size= 2 )

Uno dei quattro presupposti della regressione lineare è che esista una relazione lineare tra il predittore e la variabile di risposta.

Dal grafico possiamo vedere che la relazione appare lineare. All’aumentare del numero di ore, anche il punteggio tende ad aumentare in modo lineare.

Quindi possiamo creare un boxplot per visualizzare la distribuzione dei risultati dell’esame e verificare la presenza di valori anomali.

Nota : R definisce un’osservazione come un valore anomalo se è 1,5 volte l’intervallo interquartile al di sopra del terzo quartile o 1,5 volte l’intervallo interquartile al di sotto del primo quartile.

Se un’osservazione è anomala, nel boxplot apparirà un piccolo cerchio:

 library (ggplot2)

#create scatterplot
ggplot(df, aes(y=score)) +
  geom_boxplot() 

Non ci sono piccoli cerchi nel boxplot, il che significa che non ci sono valori anomali nel nostro set di dati.

Passaggio 3: eseguire la regressione OLS

Successivamente, possiamo utilizzare la funzione lm() in R per eseguire una regressione OLS, utilizzando le ore come variabile predittiva e il punteggio come variabile di risposta:

 #fit simple linear regression model
model <- lm(score~hours, data=df)

#view model summary
summary(model)

Call:
lm(formula = score ~ hours)

Residuals:
   Min 1Q Median 3Q Max 
-5,140 -3,219 -1,193 2,816 5,772 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 65,334 2,106 31,023 1.41e-13 ***
hours 1.982 0.248 7.995 2.25e-06 ***
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.641 on 13 degrees of freedom
Multiple R-squared: 0.831, Adjusted R-squared: 0.818 
F-statistic: 63.91 on 1 and 13 DF, p-value: 2.253e-06

Dal riepilogo del modello, possiamo vedere che l’equazione di regressione adattata è:

Punteggio = 65.334 + 1.982*(ore)

Ciò significa che ogni ora aggiuntiva studiata è associata a un aumento medio del punteggio dell’esame di 1.982 punti.

Il valore originale di 65.334 ci dice il punteggio medio previsto per l’esame per uno studente che studia per zero ore.

Possiamo anche utilizzare questa equazione per trovare il punteggio atteso dell’esame in base al numero di ore di studio di uno studente.

Ad esempio, uno studente che studia per 10 ore dovrebbe ottenere un punteggio d’esame di 85,15 :

Punteggio = 65,334 + 1,982*(10) = 85,15

Ecco come interpretare il resto del riepilogo del modello:

  • Pr(>|t|): Questo è il valore p associato ai coefficienti del modello. Poiché il valore p delle ore (2,25e-06) è significativamente inferiore a 0,05, possiamo affermare che esiste un’associazione statisticamente significativa tra ore e punteggio .
  • R quadrato multiplo: questo numero ci dice che la percentuale di variazione nei punteggi degli esami può essere spiegata dal numero di ore studiate. In generale, maggiore è il valore R quadrato di un modello di regressione, migliore è la capacità delle variabili predittive di prevedere il valore della variabile di risposta. In questo caso, l’83,1% della variazione dei punteggi è spiegabile con le ore studiate.
  • Errore standard residuo: è la distanza media tra i valori osservati e la retta di regressione. Più basso è questo valore, più una retta di regressione riesce a corrispondere ai dati osservati. In questo caso, il punteggio medio osservato all’esame si discosta di 3.641 punti dal punteggio previsto dalla retta di regressione.
  • Statistica F e valore p: la statistica F ( 63,91 ) e il corrispondente valore p ( 2,253e-06 ) ci dicono il significato complessivo del modello di regressione, ovvero se le variabili predittive nel modello sono utili per spiegare la variazione . nella variabile di risposta. Poiché il valore p in questo esempio è inferiore a 0,05, il nostro modello è statisticamente significativo e le ore sono considerate utili per spiegare la variazione del punteggio .

Passaggio 4: creare grafici residui

Infine, dobbiamo creare grafici residui per verificare le ipotesi di omoschedasticità e normalità .

Il presupposto dell’omoschedasticità è che i residui di un modello di regressione abbiano una varianza approssimativamente uguale a ciascun livello di una variabile predittrice.

Per verificare che questa ipotesi sia soddisfatta, possiamo creare un grafico dei residui rispetto agli adattamenti .

L’asse x mostra i valori adattati e l’asse y mostra i residui. Finché i residui appaiono distribuiti in modo casuale e uniforme in tutto il grafico attorno al valore zero, possiamo supporre che l’omoschedasticità non sia violata:

 #define residuals
res <- resid(model)

#produce residual vs. fitted plot
plot(fitted(model), res)

#add a horizontal line at 0 
abline(0,0)

I residui sembrano essere sparsi in modo casuale attorno allo zero e non mostrano alcuno schema evidente, quindi questa ipotesi è soddisfatta.

L’ipotesi di normalità afferma che i residui di un modello di regressione sono distribuiti approssimativamente normalmente.

Per verificare se questa ipotesi è soddisfatta, possiamo creare un grafico QQ . Se i punti del grafico giacciono lungo una linea approssimativamente retta che forma un angolo di 45 gradi, i dati vengono distribuiti normalmente:

 #create QQ plot for residuals
qqnorm(res)

#add a straight diagonal line to the plot
qqline(res) 

I residui si discostano leggermente dalla linea dei 45 gradi, ma non abbastanza da destare seria preoccupazione. Possiamo supporre che il presupposto di normalità sia soddisfatto.

Poiché i residui sono normalmente distribuiti e omoschedastici, abbiamo verificato che le ipotesi del modello di regressione OLS siano soddisfatte.

Pertanto, l’output del nostro modello è affidabile.

Nota : se uno o più presupposti non fossero soddisfatti, potremmo tentare di trasformare i nostri dati.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni in R:

Come eseguire la regressione lineare multipla in R
Come eseguire la regressione esponenziale in R
Come eseguire la regressione dei minimi quadrati ponderati in R

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *