Hi all,
Iâ know that there is a package QuantPsyc that has the function lm.beta to
calculate standardised coefficients. However, the function is not able to
handle categorical variables with more than 2 levels.
I coded an alternative function and hope to know if I have done anything
wrongly.
â
âFunction:
lm.beta2 <- function(model) {
model.coefficients <- summary(model)[["coefficients"]]
# Remove intercept and extract coefficients
model.coefficients <- model.coefficients[-grep("(Intercept)",
row.names(model.coefficients)), "Estimate"]
df.model <- model[["model"]]
df.model.factors <- df.model[sapply(df.model, class) == "factor"]
df.model.factors <- model.matrix(~.-1, df.model.factors)
df.model.factors <- df.model.factors[,colnames(df.model.factors)
%in% names(model.coefficients)]
df.model <- cbind(df.model[,sapply(df.model, class) != "factor"],
df.model.factors)
sx <- sapply(df.model[-1], sd)
sy <- sapply(df.model[1], sd)
beta <- model.coefficients * sx/sy
return(beta)}
Example:
iris.model <- lm(Sepal.Length ~ Sepal.Width + Petal.Length + Petal.Width
+Species, data = iris) lm.beta2(iris.model) Sepal.Width Petal.Length
Petal.Width 0.2610193 1.7678091 -0.2901014 Speciesversicolor
Speciesvirginica -0.4132919 -0.5846126
Did I compute the standardised coefficient correctly for Species?
â
[[alternative HTML version deleted]]
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.