SNP-set (Sequence) Kernel Association Test (SKAT)

MikuHatsune2013-06-17

SKATという手法があるらしい。
kernel methodというなんとも中二病的ネーミングの手法を用いて、レアバリアントがどうたらこうたら言っていたがちょっと追いつけなかった。
SKATをやってみる。
昔やったロジスティック回帰をやると

library(SKAT)
data(SKAT.example)
attach(SKAT.example)

g0 <- glm(y.b ~ y.c, data=SKAT.example, family="binomial")
p <- function(x){
	1/(1+exp(-sum(g0$coefficients * c(1, x))))
}
s0 <- seq(-4, 4, length=1000)
plot(SKAT.example$y.c, SKAT.example$y.b, xlim=range(s0))
points(s0, mapply(p, s0), type="l", col=2, lwd=3)

閾値を決めて表現型が決められているようだ。

# Compute the P-value of SKAT with default Beta(1,25) Weights
# - without covariates
# continuous trait
obj <- SKAT_Null_Model(y.c ~ 1, out_type="C")
SKATc0 <- SKAT(Z, obj)
# dichotomous trait
obj <- SKAT_Null_Model(y.b ~ 1, out_type="D")
SKATd1 <- SKAT(Z, obj)

# Compute the P-value of SKAT with default Beta(1,25) Weights
# - with covariates
# continuous trait
obj <- SKAT_Null_Model(y.c ~ X, out_type="C")
SKATc1 <- SKAT(Z, obj)
obj.b <- SKAT_Null_Model(y.b ~ X, out_type="D")
SKATd1 <- SKAT(Z, obj.b)

# Compute the P-value of SKAT with default Beta(1,25) Weights
# - Optimal Test
SKAT2 <- SKAT(Z, obj, method="optimal.adj")
SKAT3 <- SKAT(Z, obj.b, method="optimal.adj")

# Compute the P-value of SKAT with Beta(1,30) Weights
SKAT3 <- SKAT(Z, obj, weights.beta=c(1,30))