Skip to content

Commit 0ec182b

Browse files
denadai2Junpeng Lao
authored andcommitted
Speed up to DIC and BPIC (#2488)
1 parent 30262d7 commit 0ec182b

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

pymc3/stats.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,12 +116,13 @@ def dic(trace, model=None):
116116
`float` representing the deviance information criterion of the model and trace
117117
"""
118118
model = modelcontext(model)
119+
logp = model.logp
119120

120-
mean_deviance = -2 * np.mean([model.logp(pt) for pt in trace])
121+
mean_deviance = -2 * np.mean([logp(pt) for pt in trace])
121122

122123
free_rv_means = {rv.name: trace[rv.name].mean(
123124
axis=0) for rv in model.free_RVs}
124-
deviance_at_mean = -2 * model.logp(free_rv_means)
125+
deviance_at_mean = -2 * logp(free_rv_means)
125126

126127
return 2 * mean_deviance - deviance_at_mean
127128

@@ -328,12 +329,13 @@ def bpic(trace, model=None):
328329
Optional model. Default None, taken from context.
329330
"""
330331
model = modelcontext(model)
332+
logp = model.logp
331333

332-
mean_deviance = -2 * np.mean([model.logp(pt) for pt in trace])
334+
mean_deviance = -2 * np.mean([logp(pt) for pt in trace])
333335

334336
free_rv_means = {rv.name: trace[rv.name].mean(
335337
axis=0) for rv in model.free_RVs}
336-
deviance_at_mean = -2 * model.logp(free_rv_means)
338+
deviance_at_mean = -2 * logp(free_rv_means)
337339

338340
return 3 * mean_deviance - 2 * deviance_at_mean
339341

0 commit comments

Comments
 (0)