【问题标题】:Change cornerpoint in generalized linear model更改广义线性模型中的角点
【发布时间】:2016-02-07 08:37:40
【问题描述】:
fit <- glm(formula=y~x1+x2+x3, family = binomial)

x3 是分类变量(是/否)。该变量的角点(它是截距的一部分)自动变为“否”。我想将角点更改为“是”。我该怎么做?

为有同样问题的未来读者编辑:更改 x3 的级别


一些代码

> attach(dat)
> levels(x9)
[1] "ja"  "nej"
> x9 <-factor(x9, levels = c("nej","ja"))
> levels(x9)                       
[1] "nej" "ja"               ###Changing the level was succesfull
> summary(glm(y~.,family = binomial, data=dat))
Call:
glm(formula = y ~ ., family = binomial, data = dat)
Deviance Residuals: 
Min       1Q   Median       3Q      Max  
-3.2508   0.2410   0.4698   0.6234   1.5827  
Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  4.79255    1.42304   3.368 0.000758 ***
x1          -3.19187    2.31703  -1.378 0.168336    
x2           1.55657    2.70719   0.575 0.565308    
x3          -3.27159    1.08943  -3.003 0.002673 ** 
x4nej        0.51869    0.41696   1.244 0.213505    
x5nej       -1.51137    0.75315  -2.007 0.044776 *  
x6nej        0.18231    0.30013   0.607 0.543565    
x7           0.08706    0.08027   1.085 0.278120    
x8b         -0.71031    0.30084  -2.361 0.018220 *  
x9nej        0.92448    0.38464   2.403 0.016240 *    ###OPS: I want: x9ja here
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)

Null deviance: 396.49  on 425  degrees of freedom
Residual deviance: 342.66  on 416  degrees of freedom
AIC: 362.66
Number of Fisher Scoring iterations: 6

【问题讨论】:

  • 啊,永远不要使用attach。我知道 R 的介绍使用它,但它会产生问题。请参阅示例:attach(mtcars) ; lm(mpg ~ wt) ; mtcars$newvariable &lt;- 1:2 ; lm(mpg ~ newvariable)。由于newvariable 是在attaching 数据集之后创建的,因此lm 无法找到它。要使其正常工作,您需要再次附加数据……但不断这样做将不可避免地导致冲突。
  • @user20650 是我的新英雄。谢谢!

标签: r statistics linear-regression


【解决方案1】:

您只需要重新排序因子水平

x3 = factor(x3, levels = c("yes","no"))

glm 使用此排序。

【讨论】:

  • 嗯,它没用。更改因子的水平并通过查看以下输出进行检查:levels(x3)。但我的身材还是一样
  • 对不起 - 我在我这边测试过它并且它有效。你能发布一个可重现的例子吗?
  • 这应该可行,也许有一个数据框......所以dat$x3 = factor(dat$x3, levels = c("yes","no")
  • 我在下面发布了我的代码作为评论,因为我无法将其全部发布在这里。我希望我有足够的东西,所以你可以在这里看到我想要做什么
  • 我没有你的dat 数据框,但我重新测试了,解决方案对我有用。对不起,我不能再帮忙了。请注意,问题是 this one 的重复项
【解决方案2】:

当且仅当x3 只是一堆 1 和 0 时,您可以切换值。

x3 <- c(1,1,0,0) # old x3
x3_no <- 1 - x3

然后在多元回归中使用x3_no

dat$x3_no <- 1 - dat$x3
glm(y ~ your_linear_predictor, family = binomial)

您可能还想更新此函数以减少错误。

attach <- function(...){
cat("Don't attach your data")
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 2011-11-21
    • 1970-01-01
    相关资源
    最近更新 更多