# Step 1: fit a null model
PhenoFile <- system.file("extdata", "simuPHENO.txt", package = "GRAB")
PhenoData <- data.table::fread(PhenoFile, header = TRUE)
# Users can directly specify a time-to-event trait to analyze
obj.SPAmix <- GRAB.NullModel(
survival::Surv(SurvTime, SurvEvent) ~ AGE + GENDER + PC1 + PC2,
data = PhenoData,
subjData = IID,
method = "SPAmix",
traitType = "time-to-event",
control = list(PC_columns = "PC1,PC2")
)
# Using model residuals performs exactly the same as the above. Note that
# confounding factors are still required in the right of the formula.
obj.coxph <- survival::coxph(
survival::Surv(SurvTime, SurvEvent) ~ AGE + GENDER + PC1 + PC2,
data = PhenoData
)
obj.SPAmix <- GRAB.NullModel(
obj.coxph$residuals ~ AGE + GENDER + PC1 + PC2,
data = PhenoData,
subjData = IID,
method = "SPAmix",
traitType = "Residual",
control = list(PC_columns = "PC1,PC2")
)
# SPAmix also supports multiple residuals as below
obj.coxph <- survival::coxph(
survival::Surv(SurvTime, SurvEvent) ~ AGE + GENDER + PC1 + PC2,
data = PhenoData
)
obj.lm <- lm(QuantPheno ~ AGE + GENDER + PC1 + PC2, data = PhenoData)
obj.SPAmix <- GRAB.NullModel(
obj.coxph$residuals + obj.lm$residuals ~ AGE + GENDER + PC1 + PC2,
data = PhenoData,
subjData = IID,
method = "SPAmix",
traitType = "Residual",
control = list(PC_columns = "PC1,PC2")
)
# Step 2: conduct score test
GenoFile <- system.file("extdata", "simuPLINK.bed", package = "GRAB")
OutputDir <- tempdir()
OutputFile <- file.path(OutputDir, "Results_SPAmix.txt")
GRAB.Marker(
objNull = obj.SPAmix,
GenoFile = GenoFile,
OutputFile = OutputFile,
control = list(outputColumns = "zScore")
)
data.table::fread(OutputFile)
Run the code above in your browser using DataLab