【发布时间】:2021-11-09 19:46:21
【问题描述】:
我在下面创建了一个多项逻辑回归:
我已将系数、标准误差、z 统计量和 p 值存储在不同的变量中。 我正在尝试创建一个数据框来存储所有这些信息。
library(foreign)
library(nnet)
ml <- read.dta("https://stats.idre.ucla.edu/stat/data/hsbdemo.dta")
ml$prog2 <- relevel(ml$prog, ref = "academic")
test <- multinom(prog2 ~ 1, data = ml)
coeff <- summary(test)$coefficients
std.errs <- summary(test)$standard.errors
# calculate z-statistics of coefficients
z_stats <- summary(test)$coefficients/
summary(test)$standard.errors
# convert to p-values
p_values <- (1 - pnorm(abs(z_stats)))*2
> std.errs
(Intercept)
general 0.1781742
vocation 0.1718249
> coeff
(Intercept)
general -0.8472980
vocation -0.7419374
> p_values
(Intercept)
general 1.980067e-06
vocation 1.574605e-05
> z_stats
(Intercept)
general -4.755448
vocation -4.317984
这是我的预期输出。如何从我创建的变量创建这个数据框?我在使用 (Intercept) 列创建 general_intercept 时遇到问题。我希望通过 dplyr 来完成。
feature coefficient std.error pval z.stat
general_intercept -0.8472980 0.1781742 1.980067e-06 -4.755448
vocation_intercept -0.7419374 0.1718249 1.574605e-05 -4.317984
我需要它对变量的数量也是动态的。 例如,如果我运行这个多项逻辑回归
multinom(prog ~ ses + write, data=mdata)
我会得到这个表结构:
feature coefficient std.error p.val z_stat
academic_intercept
academic_sesmiddle
academic_seshigh
vocation_intercept
vocation_sesmiddle
vocation_seshigh
【问题讨论】:
标签: r