我知道参考电平不包括在内,但我希望有一种方法能够采取拟合glm
对象,并找出什么是参考电平(即不使用原始数据集的知识)。这是存储在glm
拟合对象的任何地方吗?
示例数据如下:
> btest <- data.frame(var1 = sample(c(1,2,3), 100, replace = T),
+ var2 = sample(c('a','b','c'), 100, replace = T),
+ var3 = sample(c('e','f','g'), 100, replace = T),
+ var4 = rnorm(100, mean = 3, 2),
+ var5 = sample(c('yes','no'), 100, replace = T))
> summary(glm(var5 ~ var1 + var2 + var3 + var4, data = btest, family = 'binomial'))
Call:
glm(formula = var5 ~ var1 + var2 + var3 + var4, family = "binomial",
data = btest)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.6988 -1.0457 -0.6213 1.1224 1.8904
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.81827 0.73173 -1.118 0.2635
var1 0.55923 0.27279 2.050 0.0404 *
var2b -0.60998 0.53435 -1.142 0.2536
var2c -0.60250 0.51706 -1.165 0.2439
var3f -0.81899 0.53345 -1.535 0.1247
var3g 0.21215 0.51907 0.409 0.6828
var4 0.04429 0.12650 0.350 0.7263
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 137.99 on 99 degrees of freedom
Residual deviance: 128.35 on 93 degrees of freedom
AIC: 142.35
Number of Fisher Scoring iterations: 4
这里我想知道var1
和var4
没有引用,但是var2
和var3
的引用水平分别是'a'
和'e'
,因为我最终输出的是一个表,其中包含这些变量在这些引用水平下的NA
和Estimate
。
编辑:对于后来来的人,我也想知道当结合下面的答案时,挖掘glm
拟合对象的terms
元素能在多大程度上有所帮助...
> btest2 <- glm(var5 ~ var1 + var3 + var2 + var4, data = btest, family = 'binomial')
> btest2$terms
var5 ~ var1 + var3 + var2 + var4
attr(,"variables")
list(var5, var1, var3, var2, var4)
attr(,"factors")
var1 var3 var2 var4
var5 0 0 0 0
var1 1 0 0 0
var3 0 1 0 0
var2 0 0 1 0
var4 0 0 0 1
attr(,"term.labels")
[1] "var1" "var3" "var2" "var4"
attr(,"order")
[1] 1 1 1 1
attr(,"intercept")
[1] 1
attr(,"response")
[1] 1
attr(,".Environment")
<environment: R_GlobalEnv>
attr(,"predvars")
list(var5, var1, var3, var2, var4)
attr(,"dataClasses")
var5 var1 var3 var2 var4
"factor" "numeric" "factor" "factor" "numeric"
> attr(btest2$terms, 'dataClasses')
var5 var1 var3 var2 var4
"factor" "numeric" "factor" "factor" "numeric"
2条答案
按热度按时间gk7wooem1#
如果你将拟合保存到变量
my_fit
中,你就可以对所有分类变量执行my_fit$xlevels
,然后你会看到它们的所有水平。然后,您可以将其与模型相关联。例如,var1不在x个水平中,因此它是连续的。Var2有3个水平(a、B、c),并且您有b和c的估计值。这意味着a是参考。Var3有类别e、f、g,并且您有f和g的估计值,因此e必须是参考。
pw9qyyiw2#
下面是一个函数,它提取
xlevels
并使用broom::tidy
(通过一些额外的操作),以便引用级别与所有其他项一起位于 Dataframe 中:由reprex package(v0.2.1)于2019年2月28日创建
(Step可以清除。)
同样可能相关的是,这里有一个链接,指向我使用上面的effect coding函数(的扩展)来提取降低的级别的影响的幅度的要点:https://gist.github.com/brshallo/f923b9b5c6360ce09beda35c3d1d55e9