[R] AFTREG with ID argument

Göran Broström goran.brostrom at gmail.com
Thu Feb 18 17:43:10 CET 2010


2010/2/18 Philipp Rappold <philipp.rappold at gmail.com>:
> Göran, David,
>
> in order to adapt aftreg to my needs I wrote a little function that I would
> like to share with you and the community.

I once promised to fix this 'asap'. Now I promise to do it tonight. OK?

Göran

>
>
> WHAT DOES IT FIX?
>
> (1) Using the id-argument in combination with missing values on covariates
> wasn't easily possible before because the id-dataframe and the
> data-dataframe had different sizes and aftreg quitted with an error. My fix
> makes sure that NAs are excluded from both dataframes and aftreg will run
> without error here.
>
> (2) The id-argument was required to be specified by its "absolute path" (eg.
> id=testdata$groupvar, see below in this thread). My adapted funtion takes
> the name of the id-variable as a string, eg. id="groupvar".
>
>
> HOW DOES IT WORK?
>
> Use function aftreg2 just like you would use aftreg. Mandatory arguments
> are: formula, data and id, where id is a string variable. Example:
>
>> testdata
>  start stop censor groupvar      var1
> 1     0    1      0        1 0.1284928
> 2     1    2      0        1 0.4896125
> 3     2    3      0        1 0.7012899
> 4     3    4      0        1        NA
> 5     0    1      0        2 0.7964361
> 6     1    2      0        2 0.8466039
> 7     2    3      1        2 0.2234271
>
> model1 <- aftreg(Surv(start, stop, censor)~var1, data=testdata, id=groupvar)
>> ERROR.
>
> model2 <- aftreg2(Surv(start, stop, censor)~var1, data=testdata,
> id="groupvar")
>> WORKS FINE.
>
>
> PREREQUISITES:
>
> (1) Make sure that missing values are only present at the end of a lifetime.
> The regression will yield false results if you have missing covariate data
> in the middle of a lifetime. For instance: known covariates from liftetime
> 0-10, 13-20, but not from 11-12. (Göran: Please correct me if I'm wrong
> here!).
>
> (2) If you have missing covariate data at the beginning of a lifetime (eg.
> missing from 0-5, but present from 6-censoring), this fix will yield false
> results if one _cannot_ assume that the missing covariates were the same
> from 0-5 as they were at 6. (Göran: Please correct me again if I'm wrong
> here with my interpretation, but that's basically what you said before)
>
>
> LISTING:
>
> aftreg2 <- function(formula, data, id, ...){
>
>        call <- match.call()
>
>        non_na_cols <- attr(attr(terms(formula), "factors"),
> "dimnames")[2][[1]]
>
>        data <- data[complete.cases(data[non_na_cols]),]
>        data <- data[complete.cases(data[id]),]
>
>        cat("Original Call: ")
>        print(call)
>
>        return(aftreg(formula=formula, data=data, id=data[,id], ...))
> }
>
>
> Hope someone finds this interesting.
>
> All the best
> Philipp
>
>
> David Winsemius wrote:
>>
>> On Feb 11, 2010, at 5:58 AM, Philipp Rappold wrote:
>>
>>> Göran, thanks!
>>>
>>> One more thing that I found: As soon as you have at least one NA in the
>>> independent vars, the trick that you mentioned does not work anymore.
>>> Example:
>>>
>>> > testdata
>>>  start stop censor groupvar      var1
>>> 1     0    1      0        1 0.1284928
>>> 2     1    2      0        1 0.4896125
>>> 3     2    3      0        1 0.7012899
>>> 4     3    4      0        1        NA
>>> 5     0    1      0        2 0.7964361
>>> 6     1    2      0        2 0.8466039
>>> 7     2    3      1        2 0.2234271
>>>
>>> > aftreg(Surv(start, stop, censor)~var1, data=testdata,
>>> > id=testdata$groupvar)
>>> Error in order(id, Y[, 1]) : Different length of arguments (* I
>>> translated this from the German Output *)
>>>
>>> Do you think there is a simple hack which excludes all subjects that have
>>> at least on NA in their independent vars? If it was only one dependent var
>>> it would probably be easy by just using subset, but I have lots of different
>>> combinations of vars that I'd like to test ;)
>>>
>>
>> I don't know if it's a "hack", but there are a set of functions that
>> perform such subsetting:
>>
>> ?na.omit
>>
>> There is a parameter that would accomplish that goal inside aftreg. You
>> may want to check what your defaults are for na.action.
>>
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list