[R] truncated observations in survreg

2005-11-18 Thread Per Jensen
Dear R-list

I have been trying to make survreg fit a normal regression model with left
truncated data, but unfortunately I am not able to figure out how to do it.

The following survreg-call seems to work just fine when the observations are
right censored:

library(survival)
n<-10

#censored observations
x<-rnorm(n)
y<-rnorm(n,mean=x)
d<-data.frame(x,y)
d$ym<-pmin(y,0.5)
d$c<-ifelse(d$ym==0.5,0,1)
s<-survreg(Surv(ym,c)~x, dist="gaussian",data=d)


The truncated observations can be fitted with the following naive code.
Being able to use survreg (or similar) would however be great.


#trucated observations
d$c<-0.1
e<-d[d$y>d$c,]
e$cc<-1
#ss<-survreg(Surv(time=c,time2 =y,event=cc,type="right")~x,
dist="gaussian",data=e)

a<-function(x,y,alpha=0,beta=1,sigma=1,s)
{
sum(
log((dnorm(y,mean=alpha+beta*x,sd=sigma^2)/(1-pnorm(q=s,mean=alpha+beta*x,sd=sigma^2
)
}

ll<-function(x,y,alpha=0,beta=1,sigma=1,s)
{
aa<-function(z){a(z[1],z[2],alpha=alpha,beta=beta,sigma=sigma,s=s)}
v<-apply(cbind(x,y),1,aa)
sum(v)
}

logl<-function(pars)
{ -a(x=e$x,y=e$y,alpha=pars[1],beta=pars[2],sigma=pars[3],s=0.1)
}

ss<-optim(c(0,0,1),logl)

print(s)
print(ss)

Thx for any help
Per Jensen

[[alternative HTML version deleted]]

__
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html


[R] Truncated observations in survreg

2005-11-17 Thread Per Jensen
Dear R-list

I have been trying to make survreg fit a normal regression model with left
truncated data, but unfortunately I am not able to figure out how to do it.

The following survreg-call seems to work just fine when the observations are
right censored:

library(survival)
n<-10

#censored observations
x<-rnorm(n)
y<-rnorm(n,mean=x)
d<-data.frame(x,y)
d$ym<-pmin(y,0.5)
d$c<-ifelse(d$ym==0.5,0,1)
s<-survreg(Surv(ym,c)~x, dist="gaussian",data=d)


The truncated observations can be fitted with the following naive code.
Being able to use survreg (or similar) would however be great.


#trucated observations
d$c<-0.1
e<-d[d$y>d$c,]
e$cc<-1
#ss<-survreg(Surv(time=c,time2=y,event=cc,type="right")~x,
dist="gaussian",data=e)

a<-function(x,y,alpha=0,beta=1,sigma=1,s)
{
sum(
log((dnorm(y,mean=alpha+beta*x,sd=sigma^2)/(1-pnorm(q=s,mean=alpha+beta*x,sd=sigma^2
)
}

ll<-function(x,y,alpha=0,beta=1,sigma=1,s)
{
aa<-function(z){a(z[1],z[2],alpha=alpha,beta=beta,sigma=sigma,s=s)}
v<-apply(cbind(x,y),1,aa)
sum(v)
}

logl<-function(pars)
{ -a(x=e$x,y=e$y,alpha=pars[1],beta=pars[2],sigma=pars[3],s=0.1)
}

ss<-optim(c(0,0,1),logl)

print(s)
print(ss)


Best Regards
Per Jensen

[[alternative HTML version deleted]]

__
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html