NR.beta: Inner Newton-Raphson algorithm for regression parameters...

View source: R/survPenV1_60.r

NR.betaR Documentation

Inner Newton-Raphson algorithm for regression parameters estimation

Description

Applies Newton-Raphson algorithm for beta estimation. Two specific modifications aims at guaranteeing convergence : first the hessian is perturbed whenever it is not positive definite and second, at each step, if the penalized log-likelihood is not maximized, the step is halved until it is.

Usage

NR.beta(build, beta.ini, detail.beta, max.it.beta = 200, tol.beta = 1e-04)

Arguments

build

list of objects returned by model.cons

beta.ini

vector of initial regression parameters; default is NULL, in which case the first beta will be log(sum(event)/sum(t1)) and the others will be zero (except if there are "by" variables or if there is a piecewise constant hazard specification in which cases all betas are set to zero)

detail.beta

if TRUE, details concerning the optimization process in the regression parameters are displayed; default is FALSE

max.it.beta

maximum number of iterations to reach convergence in the regression parameters; default is 200

tol.beta

convergence tolerance for regression parameters; default is 1e-04

Details

If we note ll.pen and beta respectively the current penalized log-likelihood and estimated parameters and ll.pen.old and betaold the previous ones, the algorithm goes on while (abs(ll.pen-ll.pen.old)>tol.beta) or any(abs((beta-betaold)/betaold)>tol.beta)

Value

List of objects:

beta

estimated regression parameters

ll.unpen

log-likelihood at convergence

ll.pen

penalized log-likelihood at convergence

haz.GL

list of all the matrix-vector multiplications X.GL[[i]]%*%beta for Gauss Legendre integration. Useful to avoid repeating operations in survPen.fit

iter.beta

number of iterations needed to converge

Examples


library(survPen)

# standard spline of time with 4 knots

data <- data.frame(time=seq(0,5,length=100),event=1,t0=0)

form <- ~ smf(time,knots=c(0,1,3,5))

t1 <- eval(substitute(time), data)
t0 <- eval(substitute(t0), data)
event <- eval(substitute(event), data)
	
# Setting up the model before fitting
model.c <- model.cons(form,lambda=0,data.spec=data,t1=t1,t1.name="time",
t0=rep(0,100),t0.name="t0",event=event,event.name="event",
expected=NULL,expected.name=NULL,type="overall",n.legendre=20,
cl="survPen(form,data,t1=time,event=event)",beta.ini=NULL)
 
# Estimating the regression parameters at given smoothing parameter (here lambda=0)
Newton1 <- NR.beta(model.c,beta.ini=rep(0,4),detail.beta=TRUE)


survPen documentation built on Sept. 14, 2023, 1:06 a.m.