-- Axiom/Fricas source file
-- Translate into .org?

-- general case
)cl p all
)pile
eta := operator 'eta
G := operator 'G
rule1 := rule (D(eta(t,beta),beta)==X; D(eta(t,beta),t)==XD*beta; D(eta(t,beta),[t,beta])==XD; eta(t,beta)==X*beta)
S := G(eta(t,beta))
H := -log(S)
h := D(H,t)
[D(expr,beta) for expr in [S,H,h]]
[rule1 expr for expr in [S,H,h]]
[rule1 D(expr,beta) for expr in [S,H,h]]

-- Proportional hazards
G(x) == exp(-exp(x))
S := G(eta(t,beta))
H := -log(S)
h := D(H,t)
D(G(x),x)
[rule1 expr for expr in [S,H,h]]
[rule1 D(expr,beta) for expr in [S,H,h]]

-- Proportional odds
G(x) == 1/(1+exp(x))
S := G(eta(t,beta))
H := -log(S)
h := D(H,t)
D(G(x),x)
[rule1 expr for expr in [S,H,h]]
[rule1 D(expr,beta) for expr in [S,H,h]]

-- Probit (is there a more canonical approach in Axiom?)
Phi := operator 'Phi
phi := operator 'phi
rule2 == rule D(Phi(x),x)==phi(x)
G(x) == Phi(-x)
S := G(eta(t,beta))
H := -log(S)
h := D(H,t)
rule2 D(G(x),x)
[rule1 rule2 expr for expr in [S,H,h]]
[rule1 rule2 D(expr,beta) for expr in [S,H,h]]

-- Additive hazards
G(x) == exp(-x)
S := G(eta(t,beta))
H := -log(S)
h := D(H,t)
D(G(x),x)
[rule1 expr for expr in [S,H,h]]
[rule1 D(expr,beta) for expr in [S,H,h]]

-- Aranda-Ordaz
G(x) == exp(-log(theta*exp(x)+1)/theta)
S := G(eta(t,beta))
H := -log(S)
h := D(H,t)
D(G(x),x)
[rule1 expr for expr in [S,H,h]]
[rule1 D(expr,beta) for expr in [S,H,h]]

-- Any other links?


-- Estimators
)cl p all

h := operator 'h
H := operator 'H
rule3 := rule (exp(logtheta)==theta; 1+theta*H(beta)==S0)

-- hazard
loghaz := log(h(beta))
rule3 D(loghaz,beta)

-- marginal hazard
marghaz := h(beta)/(1+exp(logtheta)*H(beta))
rule3 D(marghaz,beta)
rule3 D(marghaz,logtheta)
D(marghaz,beta) / (((1+exp(logtheta)*H(beta))*D(h(beta),beta)-exp(logtheta)*h(beta)*D(H(beta),beta))/(1+exp(logtheta)*H(beta))^2)
D(marghaz,logtheta) / (-exp(logtheta)*H(beta)*h(beta)/(1+exp(logtheta)*H(beta))^2)

logmarghaz := log(h(beta)/(1+exp(logtheta)*H(beta)))
rule3 D(logmarghaz,beta)
rule3 D(logmarghaz,logtheta)


-- marginal survival (identity link)
margS := (1+exp(logtheta)*H(beta))^(-exp(-logtheta)) -- identity transformation link
rule3 D(margS,beta)
rule3 D(margS,logtheta)
D(margS,beta) / (-(1+H(beta)*exp(logtheta))^(-exp(-logtheta)-1)*D(H(beta),beta))
eval(%,logtheta=1.5)
D(margS,beta) / (-margS*D(H(beta),beta)/(1+exp(logtheta)*H(beta)))
eval(%,[logtheta=1.5, H(beta)=2.0])
D(margS,logtheta) / (margS*(exp(-logtheta)*log(1+exp(logtheta)*H(beta))-H(beta)/(1+exp(logtheta)*H(beta))))
eval(%,[logtheta=1.5, H(beta)=2.0])

-- marginal survival (log-log link)
margS := log(-log((1+exp(logtheta)*H(beta))^(-exp(-logtheta))))
rule3 D(margS,beta)
rule3 D(margS,logtheta)



