Объект R типа «среда» не является подмножеством

Я делаю анализ выживаемости с интервальными цензурированными данными и пытаюсь использовать функцию intcox() из пакета incox для выполнения регрессии Кокса. Я уже провел часть анализа с помощью survfit(), и все работало нормально.

Когда я пытаюсь использовать intcox, всегда возникает проблема:

> intcox(Surv(tempo2,tempo1,type="interval2")~dados$sexo)
Error in copy.data[ord, ] : 
  object of type 'environment' is not subsettable

> intcox(Surv(tempo2,tempo1,type="interval2")~sexo, data=dados)
Error in if (any(derivs.wert$g1 <= 0)) { : 
  missing value where TRUE/FALSE needed
In addition: Warning messages:
1: In Surv(data$mix, lokal.cens) : Invalid status value, converted to NA
2: In coxph(formula, data) : X matrix deemed to be singular; variable 1

дадос$сексо — фактор с тремя уровнями, а дадос — список со 156 наблюдениями и 52 переменными. Нет никаких проблем при выполнении анализа Каплана-Мейера или при использовании coxph() без интервальных данных. Проблема остается той же, когда я использую другую переменную.
Я использую R 3.0.1.

**ОБНОВЛЕНИЕ**
Я ничего не менял, и теперь ошибка выглядит так:

> intcox(Surv(tempo2,tempo1,type="interval2")~dados$sexo)
Error in intcox(Surv(tempo2, tempo1, type = "interval2") ~ dados$sexo) : 
  Invalid cens status

> intcox(Surv(tempo2,tempo1,type="interval2")~sexo, data=dados)
Error in intcox(Surv(tempo2, tempo1, type = "interval2") ~ sexo, data = dados) : 
  Invalid cens status

person JMarcelino    schedule 31.01.2014    source источник
comment
Я считаю, что синтаксис вашей первой строки неверен. Во второй версии есть вероятность, что NA, возвращенный Surv, является причиной вашего сообщения об ошибке. И если это потому, что у вас есть единственная матрица (второе предупреждение), то вы используете инструмент, который несовместим с вашим набором данных.   -  person Carl Witthoft    schedule 31.01.2014
comment
@Carl Witthoft Я почти уверен, что обе версии означают одно и то же. И если я запускаю Surv(tempo2,tempo1,type=interval2) один, результат будет ожидаемым (объект Surv). Единственная возможность, которую я предполагаю, может быть источником ошибки, заключается в том, что я смешал цензурированные данные (правильная цензура, интервальная цензура и нецензура), и документация не упоминает эту ситуацию, хотя в ней говорится, что принимаются объекты Surv типа interval2.   -  person JMarcelino    schedule 31.01.2014


Ответы (1)


  1. Для вашей первой проблемы,

    >intcox(Surv(tempo2,tempo1,type="interval2")~sexo, data=dados)
    Error in if (any(derivs.wert$g1 <= 0)) { : 
    missing value where TRUE/FALSE needed
    In addition: Warning messages:
    1: In Surv(data$mix, lokal.cens) : Invalid status value, converted to NA
    2: In coxph(formula, data) : X matrix deemed to be singular; variable 1
    

это вызвано тем, что у вас есть переменные, которые являются линейными комбинациями других переменных в вашем фрейме данных, что делает матрицу X несингулярной, как предполагает второе предупреждение.

Coxph может решить эту несингулярную проблему, установив коэффициенты этих переменных равными NA. Однако, к сожалению, этот пакет intcox не очень надежен. Одно из решений состоит в том, чтобы сначала найти эти переменные, используя некоторую линейную модель, и исключить их из фрейма данных. Тогда прочь.

  1. Для вашей второй проблемы,

    > intcox(Surv(tempo2,tempo1,type="interval2")~sexo, data=dados)
    Error in intcox(Surv(tempo2, tempo1, type = "interval2") ~ sexo, data = dados) : 
      Invalid cens status
    

возможно, вы не правильно сформулировали свой набор данных. Я не могу быть более полезным, так как вы не предоставили больше информации о значении переменных tempo1 и tempo2.

person Ping Jin    schedule 20.01.2015