11source(test_path(" data-for-mcmc-tests.R" ))
22
3- test_that(" mcmc_intervals_data computes quantiles" , {
4- xs <- melt_mcmc(merge_chains(prepare_mcmc_array(arr , pars = " beta[1]" )))
5- d <- mcmc_intervals_data(arr , pars = " beta[1]" ,
6- prob = .3 , prob_outer = .5 )
7-
8- qs <- unlist(d [, c(" ll" , " l" , " m" , " h" , " hh" )])
9- by_hand <- quantile(xs $ Value , c(.25 , .35 , .5 , .65 , .75 ))
10- expect_equal(qs , by_hand , ignore_attr = TRUE )
11-
12- expect_equal(d $ parameter , factor (" beta[1]" ))
13- expect_equal(d $ outer_width , .5 )
14- expect_equal(d $ inner_width , .3 )
15- expect_equal(d $ point_est , " median" )
16-
17- d2 <- mcmc_areas_data(arr , pars = " beta[1]" , prob = .3 , prob_outer = .5 )
18- sets <- split(d2 , d2 $ interval )
19-
20- expect_equal(range(sets $ inner $ x ), c(d $ l , d $ h ))
21- expect_equal(range(sets $ outer $ x ), c(d $ ll , d $ hh ))
22- })
23-
24- test_that(" mcmc_intervals_data computes point estimates" , {
25- xs <- melt_mcmc(merge_chains(prepare_mcmc_array(arr , pars = " beta[2]" )))
26- d <- mcmc_intervals_data(arr , pars = " beta[2]" ,
27- prob = .3 , prob_outer = .5 , point_est = " mean" )
28-
29- expect_equal(d $ m , mean(xs $ Value ), ignore_attr = TRUE )
30- expect_equal(d $ parameter , factor (" beta[2]" ))
31- expect_equal(d $ point_est , " mean" )
32-
33- d <- mcmc_intervals_data(arr , pars = " (Intercept)" ,
34- prob = .3 , prob_outer = .5 ,
35- point_est = " none" )
36- expect_true(! (" m" %in% names(d )))
37- expect_equal(d $ point_est , " none" )
38- })
39-
403test_that(" mcmc_intervals returns a ggplot object" , {
414 expect_gg(mcmc_intervals(arr , pars = " beta[1]" , regex_pars = " x\\ :" ))
425 expect_gg(mcmc_intervals(arr1chain , pars = " beta[1]" , regex_pars = " Intercept" ))
@@ -115,6 +78,45 @@ test_that("mcmc_intervals/areas with rhat", {
11578 }
11679})
11780
81+ # _data() tests ----------------------------------------------------------------
82+
83+ test_that(" mcmc_intervals_data computes quantiles" , {
84+ xs <- melt_mcmc(merge_chains(prepare_mcmc_array(arr , pars = " beta[1]" )))
85+ d <- mcmc_intervals_data(arr , pars = " beta[1]" ,
86+ prob = .3 , prob_outer = .5 )
87+
88+ qs <- unlist(d [, c(" ll" , " l" , " m" , " h" , " hh" )])
89+ by_hand <- quantile(xs $ Value , c(.25 , .35 , .5 , .65 , .75 ))
90+ expect_equal(qs , by_hand , ignore_attr = TRUE )
91+
92+ expect_equal(d $ parameter , factor (" beta[1]" ))
93+ expect_equal(d $ outer_width , .5 )
94+ expect_equal(d $ inner_width , .3 )
95+ expect_equal(d $ point_est , " median" )
96+
97+ d2 <- mcmc_areas_data(arr , pars = " beta[1]" , prob = .3 , prob_outer = .5 )
98+ sets <- split(d2 , d2 $ interval )
99+
100+ expect_equal(range(sets $ inner $ x ), c(d $ l , d $ h ))
101+ expect_equal(range(sets $ outer $ x ), c(d $ ll , d $ hh ))
102+ })
103+
104+ test_that(" mcmc_intervals_data computes point estimates" , {
105+ xs <- melt_mcmc(merge_chains(prepare_mcmc_array(arr , pars = " beta[2]" )))
106+ d <- mcmc_intervals_data(arr , pars = " beta[2]" ,
107+ prob = .3 , prob_outer = .5 , point_est = " mean" )
108+
109+ expect_equal(d $ m , mean(xs $ Value ), ignore_attr = TRUE )
110+ expect_equal(d $ parameter , factor (" beta[2]" ))
111+ expect_equal(d $ point_est , " mean" )
112+
113+ d <- mcmc_intervals_data(arr , pars = " (Intercept)" ,
114+ prob = .3 , prob_outer = .5 ,
115+ point_est = " none" )
116+ expect_true(! (" m" %in% names(d )))
117+ expect_equal(d $ point_est , " none" )
118+ })
119+
118120test_that(" mcmc_areas_data computes density" , {
119121 areas_data <- mcmc_areas_data(arr , point_est = " none" )
120122 areas_data <- areas_data [areas_data $ interval_width == 1 , ]
@@ -153,7 +155,7 @@ test_that("compute_column_density can use density options (#118)", {
153155 expect_error(mcmc_areas_data(arr , kernel = stop()))
154156})
155157
156- test_that(" probabilities outside of [0,1] cause an error " , {
158+ test_that(" mcmc_intervals_data errors for probabilities outside of [0,1]" , {
157159 expect_error(mcmc_intervals_data(arr , prob = - 0.1 ),
158160 " must be in \\ [0,1\\ ]" )
159161 expect_error(mcmc_intervals_data(arr , prob = 1.1 ),
@@ -164,14 +166,28 @@ test_that("probabilities outside of [0,1] cause an error", {
164166 " must be in \\ [0,1\\ ]" )
165167})
166168
167- test_that(" inconsistent probabilities raise warning (#138)" , {
169+ test_that(" mcmc_intervals_data warns for inconsistent probabilities (#138)" , {
168170 expect_warning(
169171 mcmc_intervals_data(arr , prob = .9 , prob_outer = .8 ),
170172 " `prob_outer` .* is less than `prob`"
171173 )
172174})
173175
174176
177+ test_that(" mcmc_areas_ridges_data returns correct structure" , {
178+ d <- mcmc_areas_ridges_data(arr , pars = c(" beta[1]" , " sigma" ), prob = 0.5 , prob_outer = 0.9 )
179+ expect_s3_class(d , " data.frame" )
180+ expect_named(
181+ d ,
182+ c(
183+ " parameter" , " interval" , " interval_width" , " x" , " density" ,
184+ " scaled_density" , " plotting_density"
185+ )
186+ )
187+ expect_setequal(unique(d $ interval ), c(" inner" , " outer" ))
188+ expect_false(" point" %in% d $ interval )
189+ expect_equal(unique(as.character(d $ parameter )), c(" beta[1]" , " sigma" ))
190+ })
175191
176192
177193# Visual tests -----------------------------------------------------------------
0 commit comments