What is the solution to Error during conditional logistic regression in R?

set<-c(1,1,1,2,2,2)  
gender<-c(1,0,1,0,1,0)  
smoke<-c(1,1,0,0, 1,0)  
case_control<-c(1,0,0,1,0,0)

data<-data.frame(set, gender, smoke, case_control)  
data$gender<-factor(data$gender, levels=c(0,1), labels=c("female", "male"))  
data$smoke<-factor(data$smoke, levels=c(0,1), labels=c("no", "yes"))  
data$case_control<-factor(data$case_control, levels=c(0,1), labels=c("control", "case"))

In dataset named "data", I tried to do conditional logistic regression

library(survival)  
clogit(formula = data$case_control~data$gender+strata(data$set), data = data, method = "exact")**

Error was displayed as below.

Error in coxph(formula = Surv(rep(1, 6L), data$case_control) ~ data$gender + : an id statement is required for multi-state models

What could be the possible solution to this problem?

Upvotes: 1

Views: 2552

Answers (1)

pgcudahy
pgcudahy

Reputation: 1601

I've run into this too. clogit uses coxph and surv under the hood and after looking at the documentation for surv it appears that the problem is that the event argument (case_control in this example) is a factor. When the event is a factor, surv assumes there are multiple endpoints (the multi-state models mentioned in the error), so it needs an id label for each row to know which outcomes to assign to which participants. If you change your outcome to a numeric variable with

clogit(formula = as.numeric(data$case_control) ~
data$gender+strata(data$set), data = data, method = "exact")

it works just fine.

Upvotes: 1

Related Questions