【问题标题】:Finding confidence intervals寻找置信区间
【发布时间】:2019-08-14 15:38:55
【问题描述】:

我正在做一些功课,这就是问题:

创建数据框 june_polls,其中仅包含 2016 年 6 月结束的英国退欧民意调查(结束日期为“2016-06-01”及以后)。我们将计算所有民意调查的置信区间,并确定有多少覆盖了 d 的真实值。

首先,我使用dplyr::mutate 计算插件估计 se_x_hat,以计算每个民意调查的估计 SE^[X] 的标准误差,因为它的样本大小和 X^ (x_hat) 的值。其次,在给定 se_x_hat 值的情况下,再次使用dplyr::mutate 计算每个民意调查的点差标准误差的估计值。然后,第三次使用dplyr::mutate,计算价差的 95% 置信区间的上限和下限。最后,添加一列命中,指示每个民意调查的置信区间是否涵盖正确的价差 d=−0.038。

下面是我已经尝试过的代码。

library(dslabs)
library(dplyr)
data(brexit_polls)

brexit_polls <- brexit_polls %>%
  mutate(x_hat = (spread + 1)/2)

p <- 0.481

june_polls <- brexit_polls %>% filter(enddate >= as.Date("2016-06-01")) %>%
  mutate(se_x_hat = sqrt((x_hat*(1-x_hat))/samplesize)) %>% 
  mutate(se_spread = 2*se_x_hat) %>% 
  mutate(lower_spread = x_hat - qnorm(0.975)*se_spread) %>%
  mutate(upper_spread = x_hat + qnorm(0.975)*se_spread) 

mutate(june_polls, hit = between(0.495, lower_spread, upper_spread))

这是我收到的错误:Error: Expecting a single value: [extent=32]

我还认为我可能在代码中计算了一些错误,因为我的上限和下置信区间的所有值都是正数,而它们不应该是正数。

【问题讨论】:

  • 为什么上下置信区间的值不应该是正数? (我知道我们有点远离编程问题)
  • 回到编程,我不知道你在最后一行试图做什么,但如果你看一下文档between将一个向量作为第一个参数和两个常量值。您尝试实现的目标可以通过mutate(june_polls, hit = (lower_spread&lt;0.495 &amp; upper_spread&gt;0.495)) 完成

标签: r probability standard-error


【解决方案1】:

我不是 100% 确定您要做什么,或者您所说的“覆盖正确的价差 d=−0.038”是什么意思,但如果您只是想看看 p 是否包含在 95% 的置信区间内您的伯努利分布,您可以使用:

june_polls <- brexit_polls %>% filter(enddate >= as.Date("2016-06-01")) %>%
  mutate(se_x_hat = sqrt((x_hat*(1-x_hat))/samplesize)) %>% 
  mutate(se_spread = 2*se_x_hat) %>% 
  mutate(lower_spread = x_hat - qnorm(0.975)*se_spread) %>%
  mutate(upper_spread = x_hat + qnorm(0.975)*se_spread) %>%
  mutate(hit = ifelse(p > lower_spread & p < upper_spread, TRUE, FALSE))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多