Come eseguire un test di mancanza di adattamento in r (passo dopo passo)


Un test di mancanza di adattamento viene utilizzato per determinare se un modello di regressione completo fornisce o meno un adattamento significativamente migliore a un set di dati rispetto a una versione ridotta del modello.

Ad esempio, supponiamo di voler utilizzare il numero di ore di studio per prevedere i punteggi degli esami per gli studenti di un determinato college. Possiamo decidere di adattare i seguenti due modelli di regressione:

Modello completo: punteggio = β 0 + B 1 (ore) + B 2 (ore) 2

Modello ridotto: punteggio = β 0 + B 1 (ore)

Il seguente esempio dettagliato mostra come eseguire un test di adattamento per mancanza in R per determinare se il modello completo fornisce un adattamento significativamente migliore rispetto al modello ridotto.

Passaggio 1: crea e visualizza un set di dati

Innanzitutto, utilizzeremo il seguente codice per creare un set di dati contenente il numero di ore studiate e i punteggi degli esami ottenuti per 50 studenti:

 #make this example reproducible
set. seeds (1)

#create dataset
df <- data. frame (hours = runif (50, 5, 15), score=50)
df$score = df$score + df$hours^3/150 + df$hours* runif (50, 1, 2)

#view first six rows of data
head(df)

      hours score
1 7.655087 64.30191
2 8.721239 70.65430
3 10.728534 73.66114
4 14.082078 86.14630
5 7.016819 59.81595
6 13.983897 83.60510

Successivamente, creeremo un grafico a dispersione per visualizzare la relazione tra ore e punteggio:

 #load ggplot2 visualization package
library (ggplot2)

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

Passaggio 2: adattare due modelli diversi al set di dati

Successivamente, adatteremo due diversi modelli di regressione al set di dati:

 #fit full model
full <- lm(score ~ poly (hours,2), data=df)

#fit reduced model
reduced <- lm(score ~ hours, data=df)

Passaggio 3: eseguire un test di idoneità

Successivamente, utilizzeremo il comando anova() per eseguire un test di adattamento tra i due modelli:

 #lack of fit test
anova(full, reduced)

Analysis of Variance Table

Model 1: score ~ poly(hours, 2)
Model 2: score ~ hours
  Res.Df RSS Df Sum of Sq F Pr(>F)   
1 47 368.48                                
2 48 451.22 -1 -82.744 10.554 0.002144 **
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

La statistica del test F risulta essere 10,554 e il corrispondente valore p è 0,002144 . Poiché questo valore p è inferiore a 0,05, possiamo rifiutare l’ipotesi nulla del test e concludere che il modello completo fornisce un adattamento migliore, statisticamente significativo, rispetto al modello ridotto.

Passaggio 4: Visualizza il modello finale

Infine, possiamo visualizzare il modello finale (il modello completo) rispetto al set di dati originale:

 ggplot(df, aes (x=hours, y=score)) + 
          geom_point() +
          stat_smooth(method=' lm ', formula = y ~ poly (x,2), size = 1) + 
          xlab(' Hours Studied ') +
          ylab(' Score ') 

Visualizzare la mancanza di adattamento in R

Possiamo vedere che la curva del modello si adatta abbastanza bene ai dati.

Risorse addizionali

Come eseguire una regressione lineare semplice in R
Come eseguire la regressione lineare multipla in R
Come eseguire la regressione polinomiale in R

Aggiungi un commento

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