Come calcolare i coefficienti di regressione standardizzati in r


In genere, quando eseguiamo una regressione lineare multipla , i coefficienti di regressione risultanti nell’output del modello non sono standardizzati , nel senso che utilizzano i dati grezzi per trovare la linea più adatta.

 model <- lm(price ~ age + sqfeet, data=df)

Tuttavia, è possibile standardizzare ciascuna variabile predittore e la variabile di risposta (sottraendo il valore medio di ciascuna variabile dai valori originali e poi dividendolo per la deviazione standard delle variabili) e quindi eseguire una regressione, che risulta in coefficienti di regressione standardizzati .

Il modo più semplice per calcolare i coefficienti di regressione standardizzati in R è utilizzare la funzione scale() per standardizzare ciascuna variabile nel modello:

 model <- lm(scale(price) ~ scale(age) + scale(sqfeet), data=df)

L’esempio seguente mostra come calcolare nella pratica i coefficienti di regressione standardizzati.

Esempio: come calcolare i coefficienti di regressione standardizzati in R

Supponiamo di avere il seguente set di dati contenente informazioni sull’età, la metratura e il prezzo di vendita di 12 case:

 #create data frame
df <- data. frame (age=c(4, 7, 10, 15, 16, 18, 24, 28, 30, 35, 40, 44),
                 sqfeet=c(2600, 2800, 1700, 1300, 1500, 1800,
                          1200, 2200, 1800, 1900, 2100, 1300),
                 price=c(280000, 340000, 195000, 180000, 150000, 200000,
                         180000, 240000, 200000, 180000, 260000, 140000))

#view data frame
df

   age square feet price
1 4 2600 280000
2 7 2800 340000
3 10 1700 195000
4 15 1300 180000
5 16 1500 150000
6 18 1800 200000
7 24 1200 180000
8 28 2200 240000
9 30 1800 200000
10 35 1900 180000
11 40 2100 260000
12 44 1300 140000

Supponiamo quindi di eseguire una regressione lineare multipla utilizzando l’età e la metratura come variabili predittive e il prezzo come variabile di risposta:

 #fit regression model
model <- lm(price ~ age + sqfeet, data=df)

#view model summary
summary(model)

Call:
lm(formula = price ~ age + sqfeet, data = df)

Residuals:
   Min 1Q Median 3Q Max 
-32038 -10526 -6139 21641 34060 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 34736.54 37184.32 0.934 0.374599    
age -409.83 612.46 -0.669 0.520187    
sqfeet 100.87 15.75 6.405 0.000125 ***
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 24690 on 9 degrees of freedom
Multiple R-squared: 0.8508, Adjusted R-squared: 0.8176 
F-statistic: 25.65 on 2 and 9 DF, p-value: 0.0001916

Dai risultati del modello, possiamo vedere i coefficienti di regressione non standardizzati :

  • Intercetta: 34736.54
  • Età: -409,83
  • Piedi quadrati: 100,87

A prima vista, sembra che l’età abbia un effetto molto maggiore sul prezzo degli immobili poiché il suo coefficiente nella tabella di regressione è -409.833 , rispetto a solo 100.866 per la variabile predittiva della metratura.

Tuttavia, l’errore standard è molto maggiore per l’età che per la metratura, motivo per cui il corrispondente valore p è in realtà grande per l’età (p = 0,520) e piccolo per la metratura (p = 0,000).

La ragione delle differenze estreme nei coefficienti di regressione è dovuta alle differenze estreme nelle scale per le due variabili:

  • I valori per l’età vanno da 4 a 44 anni.
  • I valori di metratura vanno da 1.200 a 2.800.

Supponiamo invece di normalizzare i dati grezzi e adattare un nuovo modello di regressione:

 #standardize each variable and fit regression model
model_std <- lm(scale(price) ~ scale(age) + scale(sqfeet), data=df)

#turn off scientific notation
options(scipen= 999 )

#view model summary
summary(model_std)

Call:
lm(formula = scale(price) ~ scale(age) + scale(sqfeet), data = df)

Residuals:
    Min 1Q Median 3Q Max 
-0.5541 -0.1820 -0.1062 0.3743 0.5891 

Coefficients:
                            Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.0000000000000002253 0.1232881457926768426 0.000 1.000000
scale(age) -0.0924421263946849786 0.1381464029075653854 -0.669 0.520187
scale(sqfeet) 0.8848591938302141635 0.1381464029075653577 6.405 0.000125
                 
(Intercept)      
scale(age)       
scale(sqfeet)***
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.4271 on 9 degrees of freedom
Multiple R-squared: 0.8508, Adjusted R-squared: 0.8176 
F-statistic: 25.65 on 2 and 9 DF, p-value: 0.0001916

I coefficienti di regressione in questa tabella sono standardizzati , nel senso che hanno utilizzato dati standardizzati per adattarsi a questo modello di regressione.

Il modo di interpretare i coefficienti nella tabella è il seguente:

  • Un aumento di una deviazione standard dell’età è associato a una diminuzione della deviazione standard di 0,092 nel prezzo delle case, assumendo che la metratura rimanga costante.
  • Un aumento di una deviazione standard della metratura è associato a un aumento di 0,885 deviazione standard del prezzo delle case, presupponendo che l’età rimanga costante.

Ora possiamo vedere che la metratura ha un effetto molto maggiore sui prezzi delle case rispetto all’età.

Nota : i valori p per ciascuna variabile predittrice sono esattamente gli stessi del modello di regressione precedente.

Al momento di decidere quale modello finale utilizzare, ora sappiamo che la metratura è molto più importante per prevedere il prezzo di una casa rispetto alla sua età .

Risorse addizionali

Le seguenti esercitazioni forniscono informazioni aggiuntive sui modelli di regressione:

Come leggere e interpretare una tabella di regressione
Come interpretare i coefficienti di regressione
Come interpretare i valori P nella regressione lineare

Aggiungi un commento

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