|
26 | 26 | BetaBinomialRV, |
27 | 27 | BetaRV, |
28 | 28 | BinomialRV, |
29 | | - ChiSquareRV, |
30 | 29 | DirichletRV, |
31 | 30 | ExponentialRV, |
32 | 31 | GammaRV, |
|
44 | 43 | NormalRV, |
45 | 44 | ParetoRV, |
46 | 45 | PoissonRV, |
| 46 | + StudentTRV, |
47 | 47 | TriangularRV, |
48 | 48 | UniformRV, |
49 | 49 | VonMisesRV, |
50 | 50 | ) |
51 | | -from pytensor.tensor.var import TensorVariable |
| 51 | +from pytensor.tensor.variable import TensorVariable |
52 | 52 | from pymc.distributions.continuous import ( |
53 | 53 | AsymmetricLaplaceRV, |
54 | 54 | BetaClippedRV, |
|
59 | 59 | PolyaGammaRV, |
60 | 60 | RiceRV, |
61 | 61 | SkewNormalRV, |
62 | | - StudentTRV, |
63 | 62 | WaldRV, |
64 | 63 | WeibullBetaRV, |
65 | 64 | ) |
66 | | -from pymc.distributions.discrete import DiracDeltaRV, DiscreteUniformRV |
67 | | -from pymc.distributions.mixture import MarginalMixtureRV |
| 65 | +from pymc.distributions.distribution import DiracDeltaRV |
| 66 | +from pymc.distributions.discrete import DiscreteUniformRV |
| 67 | +from pymc.distributions.mixture import MixtureRV |
68 | 68 | from pymc.distributions.multivariate import ( |
69 | 69 | CARRV, |
70 | 70 | DirichletMultinomialRV, |
@@ -127,9 +127,8 @@ def binomial_mean(op, rv, rng, size, dtype, n, p): |
127 | 127 | return maybe_resize(n * p, size) |
128 | 128 |
|
129 | 129 |
|
130 | | -@_mean.register(ChiSquareRV) |
131 | | -def chisquare_mean(op, rv, rng, size, dtype, nu): |
132 | | - return maybe_resize(nu, size) |
| 130 | +# Note: ChiSquared is now implemented as GammaRV in PyMC v5 |
| 131 | +# Mean is correctly calculated through gamma_mean: Gamma(ν/2, 2) has mean (ν/2)*2 = ν |
133 | 132 |
|
134 | 133 |
|
135 | 134 | @_mean.register(DirichletRV) |
@@ -337,8 +336,8 @@ def dirac_delta_mean(op, rv, rng, size, dtype, c): |
337 | 336 | return maybe_resize(c, size) |
338 | 337 |
|
339 | 338 |
|
340 | | -@_mean.register(MarginalMixtureRV) |
341 | | -def marginal_mixture_mean(op, rv, rng, weights, *components): |
| 339 | +@_mean.register(MixtureRV) |
| 340 | +def mixture_mean(op, rv, rng, weights, *components): |
342 | 341 | ndim_supp = components[0].owner.op.ndim_supp |
343 | 342 | weights = pt.shape_padright(weights, ndim_supp) |
344 | 343 | mix_axis = -ndim_supp - 1 |
|
0 commit comments