@@ -30,7 +30,7 @@ struct IdentityLink <: Link end
30
30
31
31
link (:: Type{IdentityLink} , param:: T ) where T = param
32
32
unlink (:: Type{IdentityLink} , param_tilde:: T ) where T = param_tilde
33
- jacobian_link (:: Type{IdentityLink} , param_tilde :: T ) where T = one (T)
33
+ jacobian_link (:: Type{IdentityLink} , param :: T ) where T = one (T)
34
34
35
35
"""
36
36
LogLink <: Link
@@ -41,11 +41,27 @@ struct LogLink <: Link end
41
41
42
42
link (:: Type{LogLink} , param:: T , lower_bound:: T ) where T = log (param - lower_bound)
43
43
unlink (:: Type{LogLink} , param_tilde:: T , lower_bound:: T ) where T = exp (param_tilde) + lower_bound
44
- jacobian_link (:: Type{LogLink} , param_tilde :: T , lower_bound:: T ) where T = 1 / (param_tilde - lower_bound)
44
+ jacobian_link (:: Type{LogLink} , param :: T , lower_bound:: T ) where T = 1 / (param - lower_bound)
45
45
46
+ """
47
+ LogitLink <: Link
48
+
49
+ Define the map ``\\ tilde{f} = \\ -ln(\\ frac{b - a}{f + a} - 1)`` where ``f \\ in [a, b], a, b \\ in \\ mathbb{R}`` and ``\\ tilde{f} \\ in \\ mathbb{R}``
50
+ """
46
51
struct LogitLink <: Link end
47
52
53
+ function link (:: Type{LogitLink} , param:: T , lower_bound:: T , upper_bound:: T ) where T
54
+ return log ((param - lower_bound)/ (upper_bound - param))
55
+ end
56
+ function unlink (:: Type{LogitLink} , param_tilde:: T , lower_bound:: T , upper_bound:: T ) where T
57
+ return lower_bound + ((upper_bound - lower_bound)/ (1 + exp (- param_tilde)))
58
+ end
59
+ function jacobian_link (:: Type{LogitLink} , param:: T , lower_bound:: T , upper_bound:: T ) where T
60
+ return (upper_bound + lower_bound)/ ((upper_bound - param) * (param - lower_bound))
61
+ end
62
+
48
63
const LINKS = [
49
64
IdentityLink;
50
- LogLink
65
+ LogLink;
66
+ LogitLink
51
67
]
0 commit comments