【发布时间】: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<0.495 & upper_spread>0.495))完成
标签: r probability standard-error