Hoe gestandaardiseerde regressiecoëfficiënten in r te berekenen


Wanneer we meerdere lineaire regressies uitvoeren, zijn de resulterende regressiecoëfficiënten in de modeluitvoer doorgaans niet gestandaardiseerd , wat betekent dat ze de onbewerkte gegevens gebruiken om de best passende lijn te vinden.

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

Het is echter mogelijk om elke voorspellende variabele en de responsvariabele te standaardiseren (door de gemiddelde waarde van elke variabele af te trekken van de oorspronkelijke waarden en deze vervolgens te delen door de standaardafwijking van de variabelen) en vervolgens een regressie uit te voeren, wat resulteert in gestandaardiseerde regressiecoëfficiënten .

De eenvoudigste manier om gestandaardiseerde regressiecoëfficiënten in R te berekenen, is door de functie scale() te gebruiken om elke variabele in het model te standaardiseren:

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

Het volgende voorbeeld laat zien hoe u gestandaardiseerde regressiecoëfficiënten in de praktijk kunt berekenen.

Voorbeeld: Hoe gestandaardiseerde regressiecoëfficiënten in R te berekenen

Stel dat we de volgende dataset hebben met informatie over de leeftijd, vierkante meters en verkoopprijs van 12 woningen:

 #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

Stel dat we vervolgens een meervoudige lineaire regressie uitvoeren met leeftijd en vierkante meters als voorspellende variabelen en prijs als responsvariabele:

 #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

Uit de modelresultaten kunnen we de niet-gestandaardiseerde regressiecoëfficiënten zien:

  • Onderschepping: 34736.54
  • Leeftijd: -409,83
  • Vierkante voet: 100,87

Op het eerste gezicht lijkt het erop dat leeftijd een veel groter effect heeft op de vastgoedprijs, aangezien de coëfficiënt in de regressietabel -409,833 bedraagt, vergeleken met slechts 100,866 voor de voorspellende variabele voor vierkante meters.

De standaardfout is echter veel groter voor leeftijd dan voor vierkante meters. Daarom is de overeenkomstige p-waarde feitelijk groot voor leeftijd (p = 0,520) en klein voor vierkante meters (p = 0,000).

De reden voor de extreme verschillen in de regressiecoëfficiënten is te wijten aan de extreme verschillen in de schalen voor de twee variabelen:

  • Waarden voor de leeftijd variëren van 4 tot 44 jaar.
  • Vierkante lengtewaarden variëren van 1.200 tot 2.800.

Stel dat we in plaats daarvan de ruwe gegevens normaliseren en er een nieuw regressiemodel in passen:

 #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

De regressiecoëfficiënten in deze tabel zijn gestandaardiseerd , wat betekent dat er gestandaardiseerde gegevens zijn gebruikt om in dit regressiemodel te passen.

De manier om de coëfficiënten in de tabel te interpreteren is als volgt:

  • Een stijging van één standaardafwijking in leeftijd gaat gepaard met een daling van de huizenprijs met 0,092 standaardafwijking, ervan uitgaande dat het aantal vierkante meters constant blijft.
  • Een toename van één standaardafwijking in vierkante meters gaat gepaard met een stijging van de huizenprijs met 0,885 , ervan uitgaande dat de leeftijd constant blijft.

We kunnen nu zien dat vierkante meters een veel groter effect hebben op de huizenprijzen dan leeftijd.

Opmerking : de p-waarden voor elke voorspellende variabele zijn exact dezelfde als die in het vorige regressiemodel.

Bij het beslissen welk eindmodel we moeten gebruiken, weten we nu dat vierkante meters veel belangrijker zijn bij het voorspellen van de prijs van een huis dan de leeftijd ervan .

Aanvullende bronnen

De volgende tutorials bieden aanvullende informatie over regressiemodellen:

Hoe een regressietabel te lezen en interpreteren
Hoe regressiecoëfficiënten te interpreteren
Hoe P-waarden te interpreteren in lineaire regressie

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert