Написание синтаксиса для двумерных данных с цензурой на выживаемость для соответствия моделям связок в R
library(Sunclarco)
library(MASS)
library(survival)
library(SPREDA)
library(SurvCorr)
library(doBy)
#Dataset
diabetes=data("diabetes")
data1=subset(diabetes,select=c("LASER","TRT_EYE","AGE_DX","ADULT","TIME1","STATUS1"))
data2=subset(diabetes,select=c("LASER","TRT_EYE","AGE_DX","ADULT","TIME2","STATUS2"))
#Adding variable which identify cluster
data1$CLUSTER<- rep(1,197)
data2$CLUSTER<- rep(2,197)
#Renaming the variable so that that we hve uniformity in the common items in the data
names(data1)[5] <- "TIME"
names(data1)[6] <- "STATUS"
names(data2)[5] <- "TIME"
names(data2)[6] <- "STATUS"
#merge the files
Total_data=rbind(data1,data2)
# Re arranging the database
diabete_full=orderBy(~LASER+TRT_EYE+AGE_DX,data=Total_data)
diabete_full
#using Sunclarco package for Clayton a nd Gumbel
Clayton_1step <- SunclarcoModel(data=diabete_full,time="TIME",status="STATUS",
clusters="CLUSTER",covariates=c("LASER","TRT_EYE","ADULT"),
stage=1,copula="Clayton",marginal="Weibull")
summary(Clayton_1step)
# Estimates StandardErrors
#lambda 0.01072631 0.005818201
#rho 0.79887565 0.058942208
#theta 0.10224445 0.090585891
#beta_LASER 0.16780224 0.157652947
#beta_TRT_EYE 0.24580489 0.162333369
#beta_ADULT 0.09324001 0.158931463
# Estimate StandardError
#Kendall's Tau 0.04863585 0.04099436
Clayton_2step <- SunclarcoModel(data=diabete_full,time="TIME",status="STATUS",
clusters="CLUSTER",covariates=c("LASER","TRT_EYE","ADULT"),
stage=2,copula="Clayton",marginal="Weibull")
summary(Clayton_1step)
# Estimates StandardErrors
#lambda 0.01131751 0.003140733
#rho 0.79947406 0.012428824
#beta_LASER 0.14244235 0.041845100
#beta_TRT_EYE 0.27246433 0.298184235
#beta_ADULT 0.06151645 0.253617142
#theta 0.18393973 0.151048024
# Estimate StandardError
#Kendall's Tau 0.08422381 0.06333791
Gumbel_1step <- SunclarcoModel(data=diabete_full,time="TIME",status="STATUS",
clusters="CLUSTER",covariates=c("LASER","TRT_EYE","ADULT"),
stage=1,copula="GH",marginal="Weibull")
# Estimates StandardErrors
#lambda 0.01794495 0.01594843
#rho 0.70636113 0.10313853
#theta 0.87030690 0.11085344
#beta_LASER 0.15191936 0.14187943
#beta_TRT_EYE 0.21469814 0.14736381
#beta_ADULT 0.08284557 0.14214373
# Estimate StandardError
#Kendall's Tau 0.1296931 0.1108534
Gumbel_2step <- SunclarcoModel(data=diabete_full,time="TIME",status="STATUS",
clusters="CLUSTER",covariates=c("LASER","TRT_EYE","ADULT"),
stage=2,copula="GH",marginal="Weibull")
Требуется установить модели связок в R для различных классов связок, в частности, Гаусса, FGM, Плакетта и, возможно, Фрэнка (если у меня еще есть время). Я использую данные о диабете, доступные в R через пакет Survival и Survcorr.
Это мой тезис, над которым я работаю, и его исследование для исследовательских целей, чтобы увидеть, как класс связок служит различным целям, поскольку в результате они приводят к различным результатам на одном и том же. Я нашел пакет Sunclarco в Rstudio, который смог соответствовать классу связок Клейтона и Гамбеля, но для других классов его еще не было.
Проблема, с которой я сталкиваюсь, заключается в том, что, поскольку у меня есть данные, подвергнутые цензуре, которые должны быть включены в оценку вероятности, мне становится сложнее написать синтаксис, поскольку у меня нет сильного опыта программирования. Кроме того, я должен включить ковариаты, присутствующие в программировании, и увидеть их влияние на ассоциацию, если она присутствует или нет. Тем не менее, взяв моего промоутера, он дал мне понимание того, как подходить к написанию синтаксиса для этой головоломки, которая выглядит следующим образом
• ****** Прежде всего, забудьте о функции правдоподобия. Мы работаем только с функцией логарифмического правдоподобия. Таким образом, вам не нужно брать произведение вкладов по каждому из наблюдений, но вы можете взять сумму лог-вкладов по различным наблюдениям.
• Далее, поскольку у нас сбалансированный дизайн, мы можем использовать обычную структуру фрейма данных, в которой для каждого кластера у нас есть только одна строка во фрейме данных. Различные переменные, такие как время жизни, показатели и все ковариаты, являются столбцами в этом фрейме данных.
• Из-за двумерной настройки есть только 4 возможных способа внести вклад в функцию логарифмического правдоподобия: и без цензуры, и с цензурой, и с первой цензурой, и со второй цензурой, или с первой цензурой, и со второй цензурой. Итак, чтобы создать функцию логарифмического правдоподобия, вы создаете новую переменную в вашем фрейме данных, в которую вы вносите правильный вклад логарифмического правдоподобия, основанный на том, какой человек в паре подвергается цензуре. Когда вы берете сумму этой переменной, у вас есть значение функции логарифмического правдоподобия.
• Поскольку эта функция зависит от параметров, вы можете использовать любой оптимизатор, например, optim или nlm, чтобы получить оптимальные значения. Осторожно, optim и nlm ищут минимум функции, а не максимум. Это легко решить, так как минимум функции -f такой же, как максимум функции f.
• Поскольку у вас есть для каждой функции связки различные выражения для производных, должна быть возможность получить функции правдоподобия сейчас.******
Я все еще изо всех сил пытаюсь найти способ для каждого класса связок каждое из изменений вероятности, поскольку функция генератора также уникальна для соответствующей связки, так как она должна быть адаптирована во время оценки. Наконец, я должен выполнить анализ как для одного, так и для двух этапов оценки связок, которые я буду использовать для сравнения результатов.
если кто-то может помочь мне понять это, я буду вечно благодарен. Даже если только для одного класса связки, например, гауссовского, тогда я пойму это на основе того, который просит помочь, так как я попробовал все, и все же мне нечего показывать, и теперь я чувствую, что время истекает, чтобы получить ответы сам.