1
+ """
2
+ Proof somewhere
3
+ parametrized in \\ alpha and \\ theta
4
+ """
5
+ function score (y:: T , :: Type{Weibull} , param:: Vector{T} ) where T
6
+ return [
7
+ (1 / param[1 ]) + log (y/ param[2 ]) * (1 - (y/ param[2 ])^ param[1 ]) ;
8
+ (param[1 ]/ param[2 ]) * (((y/ param[2 ])^ param[1 ]) - 1 )
9
+ ]
10
+ end
11
+
12
+ """
13
+ Proof somewhere
14
+ """
15
+ function fisher_information (:: Type{Weibull} , param:: Vector{T} ) where T
16
+ return error (" Fisher information not implemented for Weibull distribution." )
17
+ end
18
+
19
+ """
20
+ Proof somewhere
21
+ """
22
+ function log_likelihood (:: Type{Weibull} , y:: Vector{T} , param:: Vector{Vector{T}} , n:: Int ) where T
23
+ loglik = zero (T)
24
+ for i in 1 : n
25
+ loglik += log (param[i][1 ]) + (param[i][1 ] - 1 ) * log (y[i]) - param[i][1 ] * log (param[i][2 ]) - (y[i]/ param[i][2 ])^ param[i][1 ]
26
+ end
27
+ return - loglik
28
+ end
29
+
30
+ # Links
31
+ function param_to_param_tilde (:: Type{Weibull} , param:: Vector{T} ) where T
32
+ return [
33
+ param_to_param_tilde (ExponentialLink, param[1 ], zero (T));
34
+ param_to_param_tilde (ExponentialLink, param[2 ], zero (T))
35
+ ]
36
+ end
37
+ function param_tilde_to_param (:: Type{Weibull} , param_tilde:: Vector{T} ) where T
38
+ return [
39
+ param_tilde_to_param (ExponentialLink, param_tilde[1 ], zero (T));
40
+ param_tilde_to_param (ExponentialLink, param_tilde[2 ], zero (T))
41
+ ]
42
+ end
43
+ function jacobian_param_tilde (:: Type{Weibull} , param_tilde:: Vector{T} ) where T
44
+ return Diagonal ([
45
+ jacobian_param_tilde (ExponentialLink, param_tilde[1 ], zero (T));
46
+ jacobian_param_tilde (ExponentialLink, param_tilde[2 ], zero (T))
47
+ ])
48
+ end
49
+
50
+ # utils
51
+ function update_dist (:: Type{Weibull} , param:: Vector{T} ) where T
52
+ # normal here is parametrized as sigma^2
53
+ return Weibull (param[1 ], param[2 ])
54
+ end
55
+
56
+ function num_params (:: Type{Weibull} )
57
+ return 2
58
+ end
0 commit comments