【问题标题】:R logistic regressionR逻辑回归
【发布时间】:2018-01-26 07:55:46
【问题描述】:

我对统计和R非常陌生。在我的数据集中,目标变量是航班状态,用于预测航班是否会延误或准时。因此,它有两个响应变量值 - 延迟和准时。那么,为了使用 R 构建逻辑回归模型,我们是否必须先将目标变量重新编码为 0 和 1?我的意思是它是否需要 0 延迟和 1 用于准时。或者我可以将目标变量作为因素吗?

请原谅我的基本问题。

【问题讨论】:

  • 感谢您的回复。在项目的一个解决方案中,我看到它在继续之前被转换为数字?但是有什么推荐的方法吗?或者你认为大多数人会遵循什么标准?我刚刚开始学习 R 和统计学,我对最佳实践很感兴趣。
  • 底线,只要您的变量属于正确的类(例如factor),就无需重新编码。

标签: r statistics logistic-regression


【解决方案1】:
data(iris)

Binary dependent variable:
iris$Species_binary <- ifelse(iris$Species=="setosa", "no", "yes")

它是一个因素吗?

glm(as.factor(iris$Species_binary)~iris$Sepal.Length, family="binomial")

是的,确实如此。

Call:  glm(formula = as.factor(iris$Species_binary) ~ iris$Sepal.Length, 
    family = "binomial")

Coefficients:
      (Intercept)  iris$Sepal.Length  
          -27.829              5.176  

Degrees of Freedom: 149 Total (i.e. Null);  148 Residual
Null Deviance:        191 
Residual Deviance: 71.84  AIC: 75.84

它会作为逻辑(布尔)变量工作吗?

glm(I(iris$Species_binary=="yes")~iris$Sepal.Length, family="binomial")
Call:  glm(formula = I(iris$Species_binary == "yes") ~ iris$Sepal.Length, 
    family = "binomial")

Coefficients:
      (Intercept)  iris$Sepal.Length  
          -27.829              5.176  

Degrees of Freedom: 149 Total (i.e. Null);  148 Residual
Null Deviance:        191 
Residual Deviance: 71.84  AIC: 75.84

是的,会的。当然,数值变量也可以。

在大多数其他用于 logit 的包/函数中也是如此,但有些可能会有不同的行为。请注意,逻辑链接是二项式系列的默认值,这就是我不必指定它的原因。

但是,如果您这样做,请确保您知道因子的哪个水平被视为正水平!否则你对结果的解释就会倒退。

【讨论】:

  • 感谢您的回复。在项目的一个解决方案中,我看到它在继续之前被转换为数字?但是有什么推荐的方法吗?或者你认为大多数人会遵循什么标准?我刚刚开始学习 R 和统计学,我对最佳实践很感兴趣。
  • @lak3567bo 不客气。大多数人会将其转换为数字,以便他们可以确定地知道打算成为正水平的因子水平正在被这样对待。由于存在以其他方式执行此操作的选项,因此没有通用的标准实践,但在有标准的情况下(如您的课程或某些期刊等),标准可能首先将其转换为数字。如果您愿意,可以单击我的答案的小复选标记,让未来的读者知道这就是答案。 :)
  • 公式接口使用可能会更好。我知道这可能是出于演示目的,但不需要教初学者一些会咬他们的东西。 mdl &lt;- glm(as.factor(iris$Species_binary)~iris$Sepal.Length, family="binomial"); predict(mdl, newdata = iris[1:5, ]); iris$Species_binary &lt;- as.factor(iris$Species_binary); mdl2 &lt;- glm(Species_binary ~ Sepal.Length, family = binomial, data = iris); predict(mdl2, newdata = iris[1:5, ])
猜你喜欢
  • 1970-01-01
  • 2018-02-12
  • 2014-06-20
  • 2021-11-13
  • 1970-01-01
  • 2015-01-30
  • 2014-06-26
  • 2018-01-26
  • 2019-08-20
相关资源
最近更新 更多