Estou tentando escrever uma função para estimar intervalos de confiança em torno da média. Quero estimar intervalos por wk
ou month
usando pd
como meu var
, no entanto, depois de tentar por um tempo, estou obtendo NAs para todos os meus wk
e além disso, a função ignora o month
e retorna wk
apenas por. Alguém poderia apontar o que estou fazendo errado? O que devo group_by dentro da função para poder alternar entre wk
e month
ao usar a ci
função? Dados e código abaixo:
x <- structure(list(wk = c(1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
2, 3, 3, 3, 3, 3, 3), month = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1), xd = c(0.0370098838217444, 0.0391215970961887,
0.0409865246890313, NA, NA, NA, NA, 0.015188, 0.007513, 0.012716,
0.013962, 0.014259, 0.023553, 0.032122, 0.03953, 0.028946, 0.030769,
0.030815, 0.029187, 0.022604), td = c(0.02701157274146, 0.0284158620689655,
0.0296560389182058, NA, NA, NA, NA, 0.0125, 0.007396, 0.010856,
0.011685, 0.011882, 0.018063, 0.023761, 0.028687, 0.021649, 0.022861,
0.022892, 0.021809, 0.017432), pd = c(317.308439683869, 0, 126.719553152898,
NA, NA, NA, NA, 2671.6, 3540.6976744186, 1270.35740604274, 1067.69362430466,
688.099646524154, 317.444499806234, 420.941879550524, 280.475476696762,
250.681324772507, 159.048160622895, 258.125109208457, 450.868907331836,
0), year = c(2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007,
2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007,
2007)), class = "data.frame", row.names = c(NA, -20L))
x
library(tidyverse)
ci <- function(dat, by, var, conf.int = 0.90,...) {
dat <- na.omit(dat)
dat %>%
group_by(wk) %>% #Should I group by wk here?
do(data.frame(rbind(smean.cl.normal(.$var, conf.int = conf.int))))
}
ci(dat = x, by = month, var = pd) # Returns NAs
Eu usaria
summarise
instead ofdo
e thenunnest_wider
. E você precisa colocar o argumento "by" entre chaves. Se vocêgroup_by(wk)
then sua função irá agrupar pelawk
variável não importa o que você especifique como argumento "by". Você também não precisa omitir o NA porquesmean.cl.normal
ele omite por padrão.