Skip to content

Commit 8f521a5

Browse files
committed
update tests
1 parent cff3c2c commit 8f521a5

3 files changed

Lines changed: 80 additions & 51 deletions

File tree

R/loo_compare.R

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -178,12 +178,7 @@ loo_compare.default <- function(x, ...) {
178178
#' the best model? The default is `TRUE`.
179179
print.compare.loo <- function(x, ..., digits = 1, p_worse = TRUE) {
180180
if (inherits(x, "old_compare.loo")) {
181-
stop(
182-
"Output from old loo::compare() detected. ",
183-
"Please rerun loo_compare() to get updated output ",
184-
"or run unclass() on the object to print it.",
185-
call. = FALSE
186-
)
181+
return(unclass(x))
187182
}
188183
if (!inherits(x, "data.frame")) {
189184
class(x) <- c(class(x), "data.frame")

tests/testthat/_snaps/compare.md

Lines changed: 62 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,77 @@
11
# loo_compare returns expected results (2 models)
22

3-
WAoAAAACAAQEAgACAwAAAAMTAAAACgAAAA4AAAACAAAAAAAAAADAEDpTX5xF7gAAAA4AAAAC
4-
AAAAAAAAAAA/tmpHtC8TAQAAAA4AAAACf/AAAAAAB6I/8AAAAAAAAAAAABAAAAACAAQACQAA
5-
AAAABAAJAAAAB04gPCAxMDAAAAAOAAAAAsBU4fDdyUJYwFXllhPDBrkAAAAOAAAAAkARCD2z
6-
EXBfQBEalRIN2T8AAAAOAAAAAkAKKMBh1blTQCZnlesA0IoAAAAOAAAAAj/x/WXscvNeP/Gb
7-
YJxtZ8cAAAAOAAAAAkBk4fDdyUJYQGXllhPDBrkAAAAOAAAAAkAhCD2zEXBfQCEalRIN2T8A
8-
AAQCAAAAAQAEAAkAAAAFbmFtZXMAAAAQAAAACgAEAAkAAAAJZWxwZF9kaWZmAAQACQAAAAdz
9-
ZV9kaWZmAAQACQAAAAdwX3dvcnNlAAQACQAAAApkaWFnX3Bub3JtAAQACQAAAAllbHBkX3dh
10-
aWMABAAJAAAADHNlX2VscGRfd2FpYwAEAAkAAAAGcF93YWljAAQACQAAAAlzZV9wX3dhaWMA
11-
BAAJAAAABHdhaWMABAAJAAAAB3NlX3dhaWMAAAQCAAAAAQAEAAkAAAAFY2xhc3MAAAAQAAAA
12-
AgAEAAkAAAALY29tcGFyZS5sb28ABAAJAAAACmRhdGEuZnJhbWUAAAQCAAAAAQAEAAkAAAAJ
13-
cm93Lm5hbWVzAAAAEAAAAAIABAAJAAAABm1vZGVsMQAEAAkAAAAGbW9kZWwyAAAA/g==
3+
WAoAAAACAAQEAgACAwAAAAMTAAAACwAAABAAAAACAAQACQAAAAZtb2RlbDEABAAJAAAABm1v
4+
ZGVsMgAAAA4AAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAACAAAAAAAAAAAAAAAAAAAAAAAA
5+
AA4AAAACf/AAAAAAB6J/8AAAAAAHogAAABAAAAACAAQACQAAAAAABAAJAAAAAAAAAA4AAAAC
6+
wFTh8N3JQljAVOHw3clCWAAAAA4AAAACQBEIPbMRcF9AEQg9sxFwXwAAAA4AAAACQAoowGHV
7+
uVNACijAYdW5UwAAAA4AAAACP/H9Zexy814/8f1l7HLzXgAAAA4AAAACQGTh8N3JQlhAZOHw
8+
3clCWAAAAA4AAAACQCEIPbMRcF9AIQg9sxFwXwAABAIAAAABAAQACQAAAAVuYW1lcwAAABAA
9+
AAALAAQACQAAAAVtb2RlbAAEAAkAAAAJZWxwZF9kaWZmAAQACQAAAAdzZV9kaWZmAAQACQAA
10+
AAdwX3dvcnNlAAQACQAAAApkaWFnX3Bub3JtAAQACQAAAAllbHBkX3dhaWMABAAJAAAADHNl
11+
X2VscGRfd2FpYwAEAAkAAAAGcF93YWljAAQACQAAAAlzZV9wX3dhaWMABAAJAAAABHdhaWMA
12+
BAAJAAAAB3NlX3dhaWMAAAQCAAAAAQAEAAkAAAAFY2xhc3MAAAAQAAAAAgAEAAkAAAALY29t
13+
cGFyZS5sb28ABAAJAAAACmRhdGEuZnJhbWUAAAQCAAAAAQAEAAkAAAAJcm93Lm5hbWVzAAAA
14+
DQAAAAKAAAAA/////gAAAP4=
1415

15-
# loo_compare returns expected result (3 models)
16+
---
17+
18+
Code
19+
print(comp1)
20+
Output
21+
model elpd_diff se_diff p_worse diag_pnorm
22+
1 model1 0.0 0.0 NA
23+
2 model2 0.0 0.0 NA
24+
25+
---
26+
27+
WAoAAAACAAQEAgACAwAAAAMTAAAACwAAABAAAAACAAQACQAAAAZtb2RlbDEABAAJAAAABm1v
28+
ZGVsMgAAAA4AAAACAAAAAAAAAADAEDpTX5xF7gAAAA4AAAACAAAAAAAAAAA/tmpHtC8TAQAA
29+
AA4AAAACf/AAAAAAB6I/8AAAAAAAAAAAABAAAAACAAQACQAAAAAABAAJAAAAB04gPCAxMDAA
30+
AAAOAAAAAsBU4fDdyUJYwFXllhPDBrkAAAAOAAAAAkARCD2zEXBfQBEalRIN2T8AAAAOAAAA
31+
AkAKKMBh1blTQCZnlesA0IoAAAAOAAAAAj/x/WXscvNeP/GbYJxtZ8cAAAAOAAAAAkBk4fDd
32+
yUJYQGXllhPDBrkAAAAOAAAAAkAhCD2zEXBfQCEalRIN2T8AAAQCAAAAAQAEAAkAAAAFbmFt
33+
ZXMAAAAQAAAACwAEAAkAAAAFbW9kZWwABAAJAAAACWVscGRfZGlmZgAEAAkAAAAHc2VfZGlm
34+
ZgAEAAkAAAAHcF93b3JzZQAEAAkAAAAKZGlhZ19wbm9ybQAEAAkAAAAJZWxwZF93YWljAAQA
35+
CQAAAAxzZV9lbHBkX3dhaWMABAAJAAAABnBfd2FpYwAEAAkAAAAJc2VfcF93YWljAAQACQAA
36+
AAR3YWljAAQACQAAAAdzZV93YWljAAAEAgAAAAEABAAJAAAABWNsYXNzAAAAEAAAAAIABAAJ
37+
AAAAC2NvbXBhcmUubG9vAAQACQAAAApkYXRhLmZyYW1lAAAEAgAAAAEABAAJAAAACXJvdy5u
38+
YW1lcwAAAA0AAAACgAAAAP////4AAAD+
1639

17-
WAoAAAACAAQEAgACAwAAAAMTAAAACgAAAA4AAAADAAAAAAAAAADAEDpTX5xF7sAwDcqRtgQY
18-
AAAADgAAAAMAAAAAAAAAAD+2ake0LxMBP8uv7eE07V4AAAAOAAAAA3/wAAAAAAeiP/AAAAAA
19-
AAA/8AAAAAAAAAAAABAAAAADAAQACQAAAAAABAAJAAAAB04gPCAxMDAABAAJAAAAB04gPCAx
20-
MDAAAAAOAAAAA8BU4fDdyUJYwFXllhPDBrnAWOVjgjbDYgAAAA4AAAADQBEIPbMRcF9AERqV
21-
Eg3ZP0AQ8gXcaKATAAAADgAAAANACijAYdW5U0AmZ5XrANCKQEHI2FIa3QoAAAAOAAAAAz/x
22-
/WXscvNeP/GbYJxtZ8c/8YDQkmfJXwAAAA4AAAADQGTh8N3JQlhAZeWWE8MGuUBo5WOCNsNi
23-
AAAADgAAAANAIQg9sxFwX0AhGpUSDdk/QCDyBdxooBMAAAQCAAAAAQAEAAkAAAAFbmFtZXMA
24-
AAAQAAAACgAEAAkAAAAJZWxwZF9kaWZmAAQACQAAAAdzZV9kaWZmAAQACQAAAAdwX3dvcnNl
25-
AAQACQAAAApkaWFnX3Bub3JtAAQACQAAAAllbHBkX3dhaWMABAAJAAAADHNlX2VscGRfd2Fp
26-
YwAEAAkAAAAGcF93YWljAAQACQAAAAlzZV9wX3dhaWMABAAJAAAABHdhaWMABAAJAAAAB3Nl
27-
X3dhaWMAAAQCAAAAAQAEAAkAAAAFY2xhc3MAAAAQAAAAAgAEAAkAAAALY29tcGFyZS5sb28A
28-
BAAJAAAACmRhdGEuZnJhbWUAAAQCAAAAAQAEAAkAAAAJcm93Lm5hbWVzAAAAEAAAAAMABAAJ
29-
AAAABm1vZGVsMQAEAAkAAAAGbW9kZWwyAAQACQAAAAZtb2RlbDMAAAD+
30-
31-
# compare returns expected result (2 models)
40+
---
3241

3342
Code
34-
comp1
43+
print(comp2)
3544
Output
36-
elpd_diff se
37-
0.0 0.0
45+
model elpd_diff se_diff p_worse diag_pnorm
46+
1 model1 0.0 0.0 NA
47+
2 model2 -4.1 0.1 1.00 N < 100
48+
49+
# loo_compare returns expected result (3 models)
50+
51+
WAoAAAACAAQEAgACAwAAAAMTAAAACwAAABAAAAADAAQACQAAAAZtb2RlbDEABAAJAAAABm1v
52+
ZGVsMgAEAAkAAAAGbW9kZWwzAAAADgAAAAMAAAAAAAAAAMAQOlNfnEXuwDANypG2BBgAAAAO
53+
AAAAAwAAAAAAAAAAP7ZqR7QvEwE/y6/t4TTtXgAAAA4AAAADf/AAAAAAB6I/8AAAAAAAAD/w
54+
AAAAAAAAAAAAEAAAAAMABAAJAAAAAAAEAAkAAAAHTiA8IDEwMAAEAAkAAAAHTiA8IDEwMAAA
55+
AA4AAAADwFTh8N3JQljAVeWWE8MGucBY5WOCNsNiAAAADgAAAANAEQg9sxFwX0ARGpUSDdk/
56+
QBDyBdxooBMAAAAOAAAAA0AKKMBh1blTQCZnlesA0IpAQcjYUhrdCgAAAA4AAAADP/H9Zexy
57+
814/8ZtgnG1nxz/xgNCSZ8lfAAAADgAAAANAZOHw3clCWEBl5ZYTwwa5QGjlY4I2w2IAAAAO
58+
AAAAA0AhCD2zEXBfQCEalRIN2T9AIPIF3GigEwAABAIAAAABAAQACQAAAAVuYW1lcwAAABAA
59+
AAALAAQACQAAAAVtb2RlbAAEAAkAAAAJZWxwZF9kaWZmAAQACQAAAAdzZV9kaWZmAAQACQAA
60+
AAdwX3dvcnNlAAQACQAAAApkaWFnX3Bub3JtAAQACQAAAAllbHBkX3dhaWMABAAJAAAADHNl
61+
X2VscGRfd2FpYwAEAAkAAAAGcF93YWljAAQACQAAAAlzZV9wX3dhaWMABAAJAAAABHdhaWMA
62+
BAAJAAAAB3NlX3dhaWMAAAQCAAAAAQAEAAkAAAAFY2xhc3MAAAAQAAAAAgAEAAkAAAALY29t
63+
cGFyZS5sb28ABAAJAAAACmRhdGEuZnJhbWUAAAQCAAAAAQAEAAkAAAAJcm93Lm5hbWVzAAAA
64+
DQAAAAKAAAAA/////QAAAP4=
3865

3966
---
4067

4168
Code
42-
comp2
69+
print(comp1)
4370
Output
44-
elpd_diff se
45-
-4.1 0.1
71+
model elpd_diff se_diff p_worse diag_pnorm
72+
1 model1 0.0 0.0 NA
73+
2 model2 -4.1 0.1 1.00 N < 100
74+
3 model3 -16.1 0.2 1.00 N < 100
4675

4776
# compare returns expected result (3 models)
4877

tests/testthat/test_compare.R

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ test_that("loo_compare throws appropriate warnings", {
6060

6161

6262
comp_colnames <- c(
63+
"model",
6364
"elpd_diff",
6465
"se_diff",
6566
"p_worse",
@@ -77,19 +78,25 @@ test_that("loo_compare returns expected results (2 models)", {
7778
expect_s3_class(comp1, "compare.loo")
7879
expect_s3_class(comp1, "data.frame")
7980
expect_equal(colnames(comp1), comp_colnames)
80-
expect_equal(rownames(comp1), c("model1", "model2"))
81-
expect_output(print(comp1), "elpd_diff")
82-
expect_equal(comp1[1:2, 1], c(0, 0), ignore_attr = TRUE)
83-
expect_equal(comp1[1:2, 2], c(0, 0), ignore_attr = TRUE)
81+
expect_equal(comp1$model, c("model1", "model2"))
82+
expect_equal(comp1$elpd_diff, c(0, 0), ignore_attr = TRUE)
83+
expect_equal(comp1$se_diff, c(0, 0), ignore_attr = TRUE)
84+
expect_equal(comp1$p_worse, c(NA_real_, NA_real_), ignore_attr = TRUE)
85+
expect_snapshot_value(comp1, style = "serialize")
86+
expect_snapshot(print(comp1))
8487

8588
comp2 <- loo_compare(w1, w2)
8689
expect_s3_class(comp2, "compare.loo")
8790
expect_equal(colnames(comp2), comp_colnames)
88-
8991
expect_snapshot_value(comp2, style = "serialize")
92+
expect_snapshot(print(comp2))
9093

9194
# specifying objects via ... and via arg x gives equal results
9295
expect_equal(comp2, loo_compare(x = list(w1, w2)))
96+
97+
# custom naming works
98+
comp3 <- loo_compare(x = list("A" = w2, "B" = w1))
99+
expect_equal(comp3$model, c("B", "A"))
93100
})
94101

95102

@@ -98,12 +105,12 @@ test_that("loo_compare returns expected result (3 models)", {
98105
comp1 <- loo_compare(w1, w2, w3)
99106

100107
expect_equal(colnames(comp1), comp_colnames)
101-
expect_equal(rownames(comp1), c("model1", "model2", "model3"))
102-
expect_equal(comp1[1, 1], 0)
108+
expect_equal(comp1$model, c("model1", "model2", "model3"))
109+
expect_equal(comp1$p_worse, c(NA, 1, 1))
103110
expect_s3_class(comp1, "compare.loo")
104111
expect_s3_class(comp1, "data.frame")
105-
106112
expect_snapshot_value(comp1, style = "serialize")
113+
expect_snapshot(print(comp1))
107114

108115
# specifying objects via '...' gives equivalent results (equal
109116
# except rownames) to using 'x' argument
@@ -119,13 +126,11 @@ test_that("compare throws deprecation warnings", {
119126

120127
test_that("compare returns expected result (2 models)", {
121128
expect_warning(comp1 <- loo::compare(w1, w1), "Deprecated")
122-
expect_snapshot(comp1)
123129
expect_equal(comp1[1:2], c(elpd_diff = 0, se = 0))
124130

125131
expect_warning(comp2 <- loo::compare(w1, w2), "Deprecated")
126-
expect_snapshot(comp2)
127-
expect_named(comp2, c("elpd_diff", "se"))
128-
expect_s3_class(comp2, "compare.loo")
132+
expect_equal(round(comp2[1:2], 3), c(elpd_diff = -4.057, se = 0.088))
133+
expect_s3_class(comp2, "old_compare.loo")
129134

130135
# specifying objects via ... and via arg x gives equal results
131136
expect_warning(comp_via_list <- loo::compare(x = list(w1, w2)), "Deprecated")

0 commit comments

Comments
 (0)