Come utilizzare un sottoinsieme di frame di dati con la funzione lm() in r


È possibile utilizzare l’argomento subset per utilizzare solo un sottoinsieme di un frame di dati quando si utilizza la funzione lm() per adattare un modello di regressione in R:

 fit <- lm(points ~ fouls + minutes, data=df, subset=(minutes> 10 ))

Questo particolare esempio corrisponde a un modello di regressione che utilizza i punti come variabile di risposta e la folla e i minuti come variabili predittive.

L’argomento subset specifica che solo le righe nel frame di dati in cui la variabile minuti è maggiore di 10 devono essere utilizzate durante l’adattamento del modello di regressione.

L’esempio seguente mostra come utilizzare questa sintassi nella pratica.

Esempio: come utilizzare un sottoinsieme di frame di dati con lm() in R

Supponiamo di avere il seguente frame di dati in R che contiene informazioni sui minuti giocati, sui falli totali e sui punti totali segnati da 10 giocatori di basket:

 #create data frame
df <- data. frame (minutes=c(5, 10, 13, 14, 20, 22, 26, 34, 38, 40),
                 fouls=c(5, 5, 3, 4, 2, 1, 3, 2, 1, 1),
                 points=c(6, 8, 8, 7, 14, 10, 22, 24, 28, 30))

#view data frame
df

   minutes fouls points
1 5 5 6
2 10 5 8
3 13 3 8
4 14 4 7
5 20 2 14
6 22 1 10
7 26 3 22
8 34 2 24
9 38 1 28
10 40 1 30

Supponiamo di voler adattare il seguente modello di regressione lineare multipla:

punti = β 0 + β 1 (minuti) + β 2 (falli)

Supponiamo tuttavia di voler utilizzare solo le righe nel frame di dati in cui la variabile minuti è maggiore di 10.

Possiamo utilizzare la funzione lm() con l’argomento subset per adattare questo modello di regressione:

 #fit multiple linear regression model (only for rows where minutes>10)
fit <- lm(points ~ fouls + minutes, data=df, subset=(minutes> 10 ))

#view model summary
summary(fit)

Call:
lm(formula = points ~ fouls + minutes, data = df, subset = (minutes > 
    10))

Residuals:
      3 4 5 6 7 8 9 10 
 1.2824 -2.5882 2.2000 -1.9118 2.3588 -1.7176 0.1824 0.1941 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -11.8353 4.9696 -2.382 0.063046 .  
fouls 1.8765 1.0791 1.739 0.142536    
minutes 0.9941 0.1159 8.575 0.000356 ***
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.255 on 5 degrees of freedom
Multiple R-squared: 0.9574, Adjusted R-squared: 0.9404 
F-statistic: 56.19 on 2 and 5 DF, p-value: 0.0003744

Possiamo usare la funzione nobs() per vedere quante osservazioni dal data frame sono state effettivamente utilizzate per adattare il modello di regressione:

 #view number of observations used to fit model
nobs(fit)

[1] 8

Possiamo vedere che per adattare il modello sono state utilizzate 8 righe del frame dati.

Se osserviamo il frame di dati originale, possiamo vedere che esattamente 8 righe avevano un valore maggiore di 10 per la variabile dei minuti , il che significa che solo quelle righe sono state utilizzate durante l’adattamento del modello di regressione.

Possiamo anche utilizzare l’operatore & nell’argomento del sottoinsieme per sottoimpostare il frame di dati in base a più condizioni.

Ad esempio, potremmo utilizzare la seguente sintassi per adattare un modello di regressione utilizzando solo le righe nel frame di dati in cui i minuti sono maggiori di 10 e gli errori sono minori di 4:

 #fit multiple linear regression model (only where minutes>10 & fouls<4)
fit <- lm(points ~ fouls + minutes, data=df, subset=(minutes> 10 & fouls< 4 ))

#view number of observations used to fit model
nobs(fit)

[1] 7

Dal risultato possiamo vedere che per adattare questo particolare modello sono state utilizzate 7 righe del frame dati.

Risorse addizionali

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

Come eseguire una regressione lineare semplice in R
Come eseguire la regressione lineare multipla in R
Come creare una trama residua in R

Aggiungi un commento

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