【问题标题】:How to format beta0 and beta1 with confidence intervals in R?如何在 R 中用置信区间格式化 beta0 和 beta1?
【发布时间】:2020-02-04 11:05:32
【问题描述】:

我需要计算简单线性回归 yi = β0 + β1xi 的 β^0 和 β^1,β0 和 β1 的置信区间为 87%,并且必须以以下格式显示我的结果的三位有效数字:

      Est    L    U
beta0 1.13 0.889 1.37
beta1 3.57 1.950 5.19

我应该使用什么代码来获得这种格式?

我已经完成了以下操作,但无法弄清楚如何将 Intercept 和 x 显示为 beta0 和 beta1 以及它们的 Estimate 和 Lower CI 和 Upper CI:

> M <- lm(y ~ x) # fit linear model
> signif(coef(M), digits = 2) # MLE's of beta
(Intercept)           x 
      -5.40        0.13 
> 
> signif(confint(M, level = 0.87), digits = 3)
             6.5 % 93.5 %
(Intercept) -5.710 -5.160
x            0.127  0.136

我在 RStudio 中这样做

编辑: 我已经使用 data.frame 来获得它:

> # data.frame for MLE's of beta with 87% confidence interval for beta0 and beta1
> data.frame(df, stringsAsFactors = )
        Est      L      U
beta0 -5.40 -5.710 -5.160
beta1  0.13  0.127  0.136
> Est <- c(-5.40, 0.13)
> L <- c(-5.710, 0.127)
> U <- c(-5.160, 0.136)
> df <- data.frame(Est,L,U)
> row.names(df) <- c('beta0', 'beta1')

但是有没有更好的方法使用内置的 R 函数 lm、coef、confint 以这种形式获取它?

【问题讨论】:

  • 如果你想编辑它,你可以把结果放在一个data.frame中并改变colnamesrownames
  • 我如何使用回归输出来实现,它给我 β^0 和 β^1 作为 Intercept 和 x?
  • 只需将输出写入变量并更改名称
  • 如果我这样写: beta0
  • 你受限于基础 R 吗? broom 让这一切变得简单。

标签: r rstudio


【解决方案1】:

重命名confint的输出的rownamescolnames

n <- 50
df <- data.frame(x = rnorm(n), y = rnorm(n))
fit <- lm(y ~ x, data = df)
ci <- confint(fit, level = .87)
colnames(ci) <- c("L", "U")
rownames(ci) <- c("beta0", "beta1")

ci
               L           U
beta0 -0.4962463 0.002210674
beta1 -0.3157171 0.152844873

如果您需要将估计值作为附加行,请将ci 矩阵转换为数据框并将fit$coefficients 添加为附加列:

ci_df <- data.frame(ci)
est <- fit$coefficients
ci_df$Est <- est

ci_df
               L           U         Est
beta0 -0.4962463 0.002210674 -0.24701781
beta1 -0.3157171 0.152844873 -0.08143609

如果您需要四舍五入,只需执行round(ci_df, 3)

【讨论】:

  • 如何将 Est 设为第一列?
  • 有大量关于更改 df 中的列顺序的 SO 帖子。我看到你是一个新的贡献者,所以一个忠告:当谷歌搜索“如何在 r 中重新排列数据框中的列”时问这样一个简单的问题会产生许多简单的答案,这表明你没有做太多工作来寻找你自己的答案。这种印象在这个网站上通常不受欢迎,因为人们通常喜欢感觉每个人都在努力学习。这是一个很好的链接,可以让您指明正确的方向:stackoverflow.com/questions/5620885/…
  • 非常感谢您的帮助,我实际上设法从代码中弄清楚了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-24
  • 1970-01-01
  • 2012-09-13
  • 2019-04-26
  • 1970-01-01
  • 2021-12-21
相关资源
最近更新 更多