如何使用交互式变量和变换获取线性模型结果并创建代数方程
How to take Linear Model results with interactive variables & transformations and create an algebraic equation
我有一个项目是在给定分类变量和连续变量的情况下估算商业房地产。我有 运行 一个逐步线性回归模型来在 RStudio 中挑选一个好的公式。 (Adj. Rsq = .90,我知道我仍然需要进行 PCA 和某种类型的分类方差分析测试,但我只想在深入之前得到一个 beta 估计量。)
如何从我的 step(lm()) 函数中获取结果输出并使用系数创建基于字符的代数 expression/equation,例如:
- log(价格)= M1X1 + M2X2 + ... + MnXn.
其中 M 是我的系数,X 是我的变量。我知道我可以在 excel 中手动完成,但是有这么多交互和基本变量,这似乎太多了。也许 R 中有一个函数,或者我可以在 python 中创建一个函数,它会询问计算所需的变量的值是多少;但是我还没想好。
非常感谢!如果有什么地方不够具体,我会尽力进一步解释。
据我所知,没有内置函数可以执行此操作(对于不同的模型类型,公式可能会变得非常混乱)。但是如果你有一个简单的线性模型,也许这个函数可以帮助
as_disp_eqn <- function(model, formatter=prettyNum, ...) {
model_terms <- terms(model)
model_response <- deparse(as.list(attr(model_terms, "variables")[-1])[[attr(model_terms, "response")]])
coefs <- coef(model)
rhs <- paste0(formatter(coefs, ...), ifelse(names(coefs)!="(Intercept)", paste(" *", names(coefs)),""))
paste(model_response, "=", paste(rhs, collapse=" + "))
}
您可以传入模型并获得打印显示。例如
mm <- lm(formula = Sepal.Length ~ Sepal.Width + Petal.Length + Species, data = iris)
as_disp_eqn(mm, digits=2)
# [1] "Sepal.Length = 2.4 + 0.43 * Sepal.Width + 0.78 * Petal.Length + -0.96 * Speciesversicolor + -1.4 * Speciesvirginica"
我有一个项目是在给定分类变量和连续变量的情况下估算商业房地产。我有 运行 一个逐步线性回归模型来在 RStudio 中挑选一个好的公式。 (Adj. Rsq = .90,我知道我仍然需要进行 PCA 和某种类型的分类方差分析测试,但我只想在深入之前得到一个 beta 估计量。)
如何从我的 step(lm()) 函数中获取结果输出并使用系数创建基于字符的代数 expression/equation,例如:
- log(价格)= M1X1 + M2X2 + ... + MnXn.
其中 M 是我的系数,X 是我的变量。我知道我可以在 excel 中手动完成,但是有这么多交互和基本变量,这似乎太多了。也许 R 中有一个函数,或者我可以在 python 中创建一个函数,它会询问计算所需的变量的值是多少;但是我还没想好。
非常感谢!如果有什么地方不够具体,我会尽力进一步解释。
据我所知,没有内置函数可以执行此操作(对于不同的模型类型,公式可能会变得非常混乱)。但是如果你有一个简单的线性模型,也许这个函数可以帮助
as_disp_eqn <- function(model, formatter=prettyNum, ...) {
model_terms <- terms(model)
model_response <- deparse(as.list(attr(model_terms, "variables")[-1])[[attr(model_terms, "response")]])
coefs <- coef(model)
rhs <- paste0(formatter(coefs, ...), ifelse(names(coefs)!="(Intercept)", paste(" *", names(coefs)),""))
paste(model_response, "=", paste(rhs, collapse=" + "))
}
您可以传入模型并获得打印显示。例如
mm <- lm(formula = Sepal.Length ~ Sepal.Width + Petal.Length + Species, data = iris)
as_disp_eqn(mm, digits=2)
# [1] "Sepal.Length = 2.4 + 0.43 * Sepal.Width + 0.78 * Petal.Length + -0.96 * Speciesversicolor + -1.4 * Speciesvirginica"