std.coef.Rd
Standardize model coefficients by Standard Deviation or Partial Standard Deviation.
std.coef(x, partial.sd, ...)
partial.sd(x)
# Deprecated:
beta.weights(model)
a fitted model object.
logical, if set to TRUE
, model coefficients are
multiplied by partial SD, otherwise they are multiplied by the
ratio of the standard deviations of the independent variable and dependent
variable.
additional arguments passed to coefTable, e.g.
dispersion
.
Standardizing model coefficients has the same effect as centring and scaling the input variables. “Classical” standardized coefficients are calculated as ^*_i = _is_X_is_y ᵢ* = ᵢ (sₓᵢ / Sᵧ) Bi* = Bi * (SXi / Sy) , where B is the unstandardized coefficient, s_X_isₓᵢSXi is the standard deviation of associated dependent variable X_iXᵢXi and s_ySᵧSy is SD of the response variable.
If variables are intercorrelated, the standard deviation of X_iXᵢXi used in computing the standardized coefficients _i^*ᵢ*Bi* should be replaced by the partial standard deviation of X_iXᵢXi which is adjusted for the multiple correlation of X_iXᵢXi with the other \(X\) variables included in the regression equation. The partial standard deviation is calculated as s_X_i^*=s_X_i VIF(X_i)^-0.5 (n-1n-p )^0.5 s*ₓᵢ = sₓᵢ √(VIFₓᵢ⁻¹) √((n-1)/(n-p)) sXi* = SXi * sqrt(1/VIF(Xi)) * sqrt((n-1)/(n-p)), where VIF is the variance inflation factor, n is the number of observations and p, the number of predictors in the model. The coefficient is then transformed as ^*_i = _i s_X_i^* ᵢ* = ᵢ s*ₓᵢ Bi* = Bi * SXi*.
A matrix with at least two columns for the standardized coefficient estimate and its standard error. Optionally, the third column holds degrees of freedom associated with the coefficients.
Cade, B.S. 2015 Model averaging and muddled multimodel inferences. Ecology 96, 2370-2382.
Afifi, A., May, S., Clark, V.A. 2011 Practical Multivariate Analysis, Fifth Edition. CRC Press.
Bring, J. 1994 How to standardize regression coefficients. The American Statistician 48, 209–213.
partial.sd
can be used with stdize.
coef or coeffs and coefTable for unstandardized coefficients.
# Fit model to original data:
fm <- lm(y ~ x1 + x2 + x3 + x4, data = GPA)
# Partial SD for the default formula: y ~ x1 + x2 + x3 + x4
psd <- partial.sd(lm(data = GPA))[-1] # remove first element for intercept
# Standardize data:
zGPA <- stdize(GPA, scale = c(NA, psd), center = TRUE)
# Note: first element of 'scale' is set to NA to ignore the first column 'y'
# Coefficients of a model fitted to standardized data:
zapsmall(coefTable(stdizeFit(fm, newdata = zGPA)))
#> Estimate Std. Error df
#> (Intercept) 0.000000 0.060042 15
#> z.x1 0.206511 0.060042 15
#> z.x2 0.136321 0.060042 15
#> z.x3 0.123811 0.060042 15
#> z.x4 0.029788 0.060042 15
# Standardized coefficients of a model fitted to original data:
zapsmall(std.coef(fm, partial = TRUE))
#> Estimate* Std. Error* df
#> (Intercept) 0.000000 0.000000 15
#> x1 0.206511 0.060042 15
#> x2 0.136321 0.060042 15
#> x3 0.123811 0.060042 15
#> x4 0.029788 0.060042 15
# Standardizing nonlinear models:
fam <- Gamma("inverse")
fmg <- glm(log(y) ~ x1 + x2 + x3 + x4, data = GPA, family = fam)
psdg <- partial.sd(fmg)
zGPA <- stdize(GPA, scale = c(NA, psdg[-1]), center = FALSE)
fmgz <- glm(log(y) ~ z.x1 + z.x2 + z.x3 + z.x4, zGPA, family = fam)
# Coefficients using standardized data:
coef(fmgz) # (intercept is unchanged because the variables haven't been
#> (Intercept) z.x1 z.x2 z.x3 z.x4
#> 2.326276715 -0.104168765 -0.047322052 -0.104439028 -0.008194491
# centred)
# Standardized coefficients:
coef(fmg) * psdg
#> (Intercept) x1 x2 x3 x4
#> 0.000000000 -0.104168765 -0.047322052 -0.104439028 -0.008194491