[R] Time Dependent Cox Model

joris meys jorismeys at gmail.com
Thu Oct 15 01:38:57 CEST 2009

```On Wed, Oct 14, 2009 at 9:19 PM, quaildoc <just.struttin at gmail.com> wrote:
>
> Some suggested that go into more detail on what I wanted to accomplish and
> the rest of my code.  I want to accomplish exactly what Fox did in this
> article( http://www.nabble.com/file/p25897307/appendix-cox-regression.pdf
> appendix-cox-regression.pdf ) (starting with page 7), except using "habitat"
> instead of employment. I want habitat to be a time dep. covariate and it
> varys by day.
>
> I read in my data as the csv. file, and one major difference in the data set
> Fox used and min is I have a DaysatRisk column instead of the "week" the
> person went back to jail. This I think is the root of my problem calculating
> the proper death.time.  The death.time column should be 1s and 0s that
> corresponds to the day the animal died.
>
>
>
>
>
> sum(!is.na(surv[,16:726]))

stoptest <-c() # seeing what comes out of the test
onetest <-c() # seeing what comes out of the test

>
> surv2<-matrix(0,12329,19)
> colnames(surv2)<-c('start', 'stop', 'death.time',
> names(surv)[1:15],'habitat')
> row<-0 # set record counter to 0
>    for (i in 1:nrow(surv)) { # loop over individuals
>        for (j in 16:726) { # loop over 52 weeks
>          if (is.na(surv[i, j])) next # skip missing data
>          else {
>            row <- row + 1 # increment row counter
>            start <- j - 11 # start time (previous week)

This is the first thing  I don't understand. start can be summarized
by a vector 5:715. How this indicates start time, is unclear to me.
Same goes for stop time (that's a vector 6:716).

>            stop <- start + 1 # stop time (current week)
>            death.time <- if (stop == surv[i, 4] && surv[i, 5] ==1) 1 else 0

I modified your code here too :
stoptest <- c(stoptest,stop==surv[i,4])
onetest <- c(onetest,surv[i,5]==1)

>                   # construct record:
>            surv2[row,] <- c(start, stop, death.time, unlist(surv[i, c(1:15,
> j)]))
>            }
>        }
>   }

I ran until here. Now this came out :

> sum(stoptest)
[1] 0
> sum(onetest)
[1] 0
>

How comes? Both are factors without a numeric value, so the tests you
do make no sense. You check if a factor is equal to a certain number,
and that's neither for the first condition, nor for the second
condition ever the case. That's why you get all zeros.

What you need to do, if figure out what exactly is in the variables
"week" and "arrest" of the dataset Rossi, and adapt your data frame
accordingly.

Cheers
Joris

>
> JorisMeys wrote:
>>
>> Well,
>>
>> it might be wise to elaborate a bit more about the variables and what
>> exactly you want e.g. death-time to be. I'd interprete it as time of
>> death, but the fact that it is 0/1, means it is a logical (?) binary
>> variable of some sort.
>>
>> the dataset and your research, can still understand what is inside the
>> dataset and what exactly you're trying to obtain.
>>
>> I'd also suggest to add the command to read in the data. I don't have
>> the time to spend looking around how exactly I can read in the dataset
>> in such a way it fits what you have in your workspace.
>>
>> Cheers
>> Joris
>>
>> On Wed, Oct 14, 2009 at 5:37 PM, quaildoc <just.struttin at gmail.com> wrote:
>>>
>>> Does anyone have suggestions? Thanks!
>>>
>>> quaildoc wrote:
>>>>
>>>> I am having trouble formatting some survival data to use in a time
>>>> dependent cox model. My time dep. variable is habitat and I have it
>>>> recorded for every day (with some NAs).  I think it is working properly
>>>> except for calculating the death.time. This column should be 1s or 0s
>>>> and
>>>> as I have it only produces 0s.  Any help will be greatly appreciated.
>>>>
>>>>
>>>>  http://www.nabble.com/file/p25881478/Survival_master2.csv
>>>> Survival_master2.csv
>>>>
>>>>
>>>>
>>>>  Here is my code:
>>>> sum(!is.na(surv[,16:726]))
>>>>
>>>> surv2<-matrix(0,12329,19)
>>>> colnames(surv2)<-c('start', 'stop', 'death.time',
>>>> names(surv)[1:15],'habitat')
>>>> row<-0 # set record counter to 0
>>>>     for (i in 1:nrow(surv)) { # loop over individuals
>>>>         for (j in 16:726) { # loop over 726 days
>>>>           if (is.na(surv[i, j])) next # skip missing data
>>>>           else {
>>>>             row <- row + 1 # increment row counter
>>>>             start <- j - 11 # start time (previous day)
>>>>             stop <- start + 1 # stop time (day)
>>>>             death.time <- if (stop == surv[i, 4] && surv[i, 5] ==1) 1
>>>> else
>>>> 0
>>>>                    # construct record:
>>>>             surv2[row,] <- c(start, stop, death.time, unlist(surv[i,
>>>> c(1:15, j)]))
>>>>             }
>>>>         }
>>>>    }
>>>> surv2<-as.data.frame(surv2)
>>>>
>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/Time-Dependent-Cox-Model-tp25881478p25893488.html
>>> Sent from the R help mailing list archive at Nabble.com.
>>>
>>> ______________________________________________
>>> R-help at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>>>
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>>
>
> --
> View this message in context: http://www.nabble.com/Time-Dependent-Cox-Model-tp25881478p25897307.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help