iter.R

```
iter <- function(x, y, delta, beta)
{
# This function computes one iteration of the EM for
# censored regression est. (Buckley-James) It first order the
# data according to the residuals, then
# compute conditional expectations, then compute a new beta by lm().
#
# Input:
# x is a matrix of N rows (the covariates),
# y is the censored response, a vector of length N.
# delta is a vector of length N.
# (delta =1 means (y) is uncensored. delta = 0 means
# the (y) is censored.)
# beta is the initial est. and is a vector of length = no. of column(x)
#
# Output: the new value of beta,
#
N <- length(delta)
u <- x %*% beta
res <- y - u
niceorder <- order(res, - delta) # order the obs according to
resorder <- res[niceorder] # res, if tie then according to
dorder <- delta[niceorder] # delta value i.e. d=1 comes first
dorder[N] <- 1 # added 2005 3/20
uorder <- u[niceorder]
ystar <- y[niceorder] # should I just let ystar <- delta ?
xorder <- as.matrix(x[niceorder,])
temp <- WKM(x=resorder, d=dorder, zc=1:N) # add ( , zc=1:N ) 2005, 3
jifen <- rev( cumsum( rev(resorder * temp$jump)) )
Sresorder <- temp$surv
for (i in 1:N) if (dorder[i] == 0) {
ystar[i] <- uorder[i] + jifen[i]/Sresorder[i]
}
return( lm( ystar ~ 0 + xorder )$coef )
}
```