Göran, no worries - your help & advice is already invaluable!

Göran Broström wrote:
2010/2/18 Philipp Rappold <philipp.rapp...@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@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.



______________________________________________
R-help@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.

Reply via email to