[英]Obtaining Standardized coefficients from “rstanarm” package in R?
我想知道是否有可能(也许建议)从rstanarm
包中的rstanarm
stan_glm()
获得标准化系数 ? ( 未在文档中找到任何特定内容 )
我是否可以像正常回归一样将所有变量标准化? ( 见下文 )
例:
library("rstanarm")
fit <- stan_glm(wt ~ vs*gear, data = mtcars)
标准化:
design <- wt ~ vs*gear
vars <- all.vars(design)
stand.vars <- lapply(mtcars[, vars], scale)
fit <- stan_glm(stand.vars, data = mtcars)
我不会肯定地建议这样做,但我建议您不要减去样本均值并除以结果的样本标准差,因为这两个统计量中的估计不确定性不会传播到后验分布。
标准化预测变量更具争议性。 您可以执行此操作,但是这样会使使用新数据进行后验预测变得更加困难,因为您必须记住要从新数据中减去旧均值并除以旧标准差。
计算上最有效的方法是保留变量不变,但指定非默认参数QR = TRUE
,尤其是如果您始终不打算修改系数的默认(正常)先验值时。 如果感兴趣的是标准化系数,则可以事后标准化后验系数。 为此,您可以执行X <- model.matrix(fit) sd_X <- apply(X, MARGIN = 2, FUN = sd)[-1] sd_Y <- apply(posterior_predict(fit), MARGIN = 1, FUN = sd) beta <- as.matrix(fit)[ , 2:ncol(X), drop = FALSE] b <- sweep(sweep(beta, MARGIN = 2, STATS = sd_X, FUN = `*`), MARGIN = 1, STATS = sd_Y, FUN = `/`) summary(b)
但是,对回归系数进行标准化只是给人一种跨变量可比性的错觉,而对于一个标准差的差异有多严格,尤其是对于虚拟变量,则没有任何说明。 如果您的问题确实是要操纵此预测变量还是该预测变量对结果变量产生更大的影响,则只需模拟诸如PPD_0 <- posterior_predict(fit) nd <- model.frame(fit) nd[ , 2] <- nd[ , 2] + 1 # for example PPD_1 <- posterior_predict(fit, newdata = nd) summary(c(PPD_1 - PPD_0))
并针对其他感兴趣的操作重复该过程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.