【问题标题】:Pulling Intercept from tidy functionality从整洁的功能中提取拦截
【发布时间】:2021-06-29 09:21:14
【问题描述】:

是否可以从扫帚包中的整洁功能中提取截距和斜率?我知道可以一目了然地拉出 r.squared。

df <- tibble(education = c("Low", "Medium", "High", "Low", "Medium", "High", "High"),
             wellbeing = c(7, 6, 7, 4, 5, 4, 5))
df$education <- as.factor(df$education)

mdl <- lm(
  wellbeing ~ education, 
  data = df,
  family = gaussian
)

# Pulling r.squared from glance
library(dplyr)
library(broom)
mdl %>%
  glance() %>%
  pull(r.squared)

# Pulling intercept from tidy?
library(dplyr)
library(broom)
mdl %>%
  tidy() %>%
  pull(Intercept)

【问题讨论】:

  • 你的意思是plot(mdl) mdl %&gt;% tidy() %&gt;% pull(estimate)。然后添加%&gt;% .[1]
  • … %&gt;% filter(term == '(Intercept)')?或者,如果您希望将值放在单个列中:… %&gt;% filter(term = '(Intercept)') %&gt;% select(-term) %&gt;% pivot_longer(everything())

标签: r dplyr broom


【解决方案1】:

更新

我们也可以使用coef 函数来提取系数。我要感谢@Konrad Rudolph 先生的宝贵提示。 如果我正确地得到了你想要的,你可以使用它。如果您想选择family 作为gaussian,则必须使用glm 而不是lm 函数。

mdl <- glm(
    wellbeing ~ education, 
    data = df,
    family = gaussian
)

mdl %>% 
  coef()

    (Intercept)    educationLow educationMedium 
      5.3333333       0.1666667       0.1666667 

mdl %>% 
  .[["coefficients"]]

    (Intercept)    educationLow educationMedium 
      5.3333333       0.1666667       0.1666667

或者这个:

mdl %>% 
  summary() %>%
  .[["coefficients"]]

                 Estimate Std. Error  t value    Pr(>|t|)
(Intercept)     5.3333333  0.8975275 5.942251 0.004022519
educationLow    0.1666667  1.4191155 0.117444 0.912169166
educationMedium 0.1666667  1.4191155 0.117444 0.912169166

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多