@@ -14,8 +14,8 @@ def _psivar2musigma(psi: pt.TensorVariable, var: pt.TensorVariable):
14
14
15
15
def _R2D2M2CP_beta (
16
16
name : str ,
17
- variance : pt .TensorVariable ,
18
- param_sigma : pt .TensorVariable ,
17
+ output_sigma : pt .TensorVariable ,
18
+ input_sigma : pt .TensorVariable ,
19
19
r2 : pt .TensorVariable ,
20
20
phi : pt .TensorVariable ,
21
21
psi : pt .TensorVariable ,
@@ -26,9 +26,9 @@ def _R2D2M2CP_beta(
26
26
"""R2D2M2CP_beta prior.
27
27
name: str
28
28
Name for the distribution
29
- variance : tensor
29
+ output_sigma : tensor
30
30
standard deviation of the outcome
31
- param_sigma : tensor
31
+ input_sigma : tensor
32
32
standard deviation of the explanatory variables
33
33
r2: tensor
34
34
expected R2 for the linear regression
@@ -38,21 +38,21 @@ def _R2D2M2CP_beta(
38
38
probability of a coefficients to be positive
39
39
"""
40
40
tau2 = r2 / (1 - r2 )
41
- explained_variance = phi * tau2 * pt .expand_dims (variance , - 1 )
41
+ explained_variance = phi * tau2 * pt .expand_dims (output_sigma ** 2 , - 1 )
42
42
mu_param , std_param = _psivar2musigma (psi , explained_variance )
43
43
if not centered :
44
44
with pm .Model (name ):
45
45
raw = pm .Normal ("raw" , dims = dims )
46
- beta = pm .Deterministic (name , (raw * std_param + mu_param ) / param_sigma , dims = dims )
46
+ beta = pm .Deterministic (name , (raw * std_param + mu_param ) / input_sigma , dims = dims )
47
47
else :
48
- beta = pm .Normal (name , mu_param / param_sigma , std_param / param_sigma , dims = dims )
48
+ beta = pm .Normal (name , mu_param / input_sigma , std_param / input_sigma , dims = dims )
49
49
return beta
50
50
51
51
52
52
def R2D2M2CP (
53
53
name ,
54
- variance ,
55
- param_sigma ,
54
+ output_sigma ,
55
+ input_sigma ,
56
56
* ,
57
57
dims ,
58
58
r2 ,
@@ -69,16 +69,16 @@ def R2D2M2CP(
69
69
----------
70
70
name : str
71
71
Name for the distribution
72
- variance : tensor
73
- Output variance
74
- param_sigma : tensor
72
+ output_sigma : tensor
73
+ Output standard deviation
74
+ input_sigma : tensor
75
75
Input standard deviation
76
76
dims : Union[str, Sequence[str]]
77
77
Dims for the distribution
78
78
r2 : tensor
79
79
:math:`R^2` estimate
80
80
variables_importance : tensor, optional
81
- Optional estimate for variables importance, positive, , by default None
81
+ Optional estimate for variables importance, positive, by default None
82
82
variance_explained : tensor, optional
83
83
Alternative estimate for variables importance which is point estimate of
84
84
variance explained, should sum up to one, by default None
@@ -93,8 +93,8 @@ def R2D2M2CP(
93
93
94
94
Returns
95
95
-------
96
- residual_variance , coefficients
97
- Output variance is split in residual variance and explained variance.
96
+ residual_sigma , coefficients
97
+ Output variance (sigma squared) is split in residual variance and explained variance.
98
98
99
99
Raises
100
100
------
@@ -109,8 +109,8 @@ def R2D2M2CP(
109
109
if not isinstance (dims , (list , tuple )):
110
110
dims = (dims ,)
111
111
* hierarchy , dim = dims
112
- param_sigma = pt .as_tensor (param_sigma )
113
- variance = pt .as_tensor (variance )
112
+ input_sigma = pt .as_tensor (input_sigma )
113
+ output_sigma = pt .as_tensor (output_sigma )
114
114
with pm .Model (name ) as model :
115
115
if variables_importance is not None and len (model .coords [dim ]) > 1 :
116
116
if variance_explained is not None :
@@ -132,7 +132,7 @@ def R2D2M2CP(
132
132
else :
133
133
psi = pt .as_tensor (positive_probs )
134
134
beta = _R2D2M2CP_beta (
135
- name , variance , param_sigma , r2 , phi , psi , dims = hierarchy + [dim ], centered = centered
135
+ name , output_sigma , input_sigma , r2 , phi , psi , dims = hierarchy + [dim ], centered = centered
136
136
)
137
- variance_resid = (1 - r2 ) * variance
138
- return variance_resid , beta
137
+ resid_sigma = (1 - r2 ) ** 0.5 * output_sigma
138
+ return resid_sigma , beta
0 commit comments