Hatena::ブログ(Diary)

驚異のアニヲタ社会復帰への道

Prima Project

2012-12-09

臨床データの取扱い

ゲノム疫学のためのインフォマティクス2012 臨床データの取扱い

臨床データ

あり-なしの2値

連続値 取りうる値

下限値?

単位、範囲、時間

カテゴリ

血清中のなにかの検査値

2012-11-16

Hardy–Weinberg 平衡

GWASにおけるHardy–Weinberg 平衡の多重検定がいろんなところで話題になっているので少しいじろうと思ったけど、サーチでかなり引っかかるので

library(GWASExactHW)
library(genetics)

ここらへんが使いやすそうな気がする。

2012-11-14

ハイスループット、実験データの質の管理

ゲノム疫学のためのインフォマティクス2012 ハイスループット、実験データの質の管理

 

1マーカー1形質テストはサンプルがランダムであることを前提とする。

GWAS用に検定結果を補正する

バイアスのあるサンプル:構造化補正

テスト間の非独立性:多重性

同一のマーカーに対する検定、同一のサンプルを含んだテストはそれぞれ相互に独立ではない。

p値が似る←2x3の分割表が似ている←アレルが連鎖不平衡

 

補正:サンプルがランダムであることを前提としたばらつきと、ランダムでないことを前提としたばらつきとの対比で行う。

外れ値は比較するにあたって重要。

明らかな原因が確認されなければデータは捨てない。

明らかな原因が見つかった場合は、分布の美を破壊しないような形でデータを捨てる。

 

分布がずれているとき、1回検定のつもりでp値を出すと正しくない。

 

たくさんマーカーがある場合

50万回検定→Χ2値

ヒストグラム、累積図を描いてみて、こういう形なんだ…

分布を表す式がほしい→この通りなら珍しくない。

データQCで先にデータを捨てて分布を作成すると、予想がおかしくなる。

 

HWEに則っているか:HWE検定 0<p<1

random matingをしていれば、p値は大きい。

構造化がなく、独立のとき、一番小さいと予想されるp値は2*10^{-6}

1回の実験なら、おかしいと捨てうる。

50万回なら?

 

論文はどうしているか?

初期は、10^{-2}を切ったら捨てていた。

2*10^{-6}ということを知っているので、今は捨てない。

HWEで構造化があると、p値は小さめになる。

p=10^{-20}が普通となったら、どうなるか?

描いてとにかく分布を見てみる。

 

データQCの基本

分布のきれいさ

理由

 

普通の統計学は、1回使ったサンプルは使いまわさない:メタアナリシス

 

データQCの理由付け

genotypeデータを用いた入力データのチェック

対象はデータレコードそのものではなく、レコードが作られた経緯。

情報の入力方法?アノテーション?

遺伝情報を用いないチェックと用いるチェック

 

X染色体:モザイク、XXY

サンプル同士が似ている:DNAコンタミ、超近い近親関係

マーカー同士が似ている:重複登録連鎖不平衡

など。

2012-10-31

MikuHatsune2012-10-31

Rでメタアナリシス

メタアナリシスの講義を受けたのでrmetaを使ってメタアナリシスがどんなんかをひたすらプロットしていく。

 

install.packages("rmeta")
library(rmeta)
data(catheter)

このデータは銀加工かなんかをされたカテーテルの細菌感染具合を調べたものらしい。

加工カテーテルと標準カテーテルを比較して、コロニー形成と、血流内まで細菌が到達してしまったものを検討したいらしい。

Name: 論文の著者

n.trt: 加工カテーテルの数

n.ctrl: 標準カテーテルの数

col.trt: 加工カテーテルのうち、細菌コロニーができてしまった数

col.ctrl: 標準カテーテルのうち、細菌コロニーができてしまった数

inf.trt: 加工カテーテルのうち、血液感染してしまった数。

inf.ctrl: 標準カテーテルのうち、血液感染してしまった数。

catheter
         Name n.trt n.ctrl col.trt col.ctrl inf.trt inf.ctrl
1      Ciresi   124    127      15       21      13       14
2      George    44     35      10       25       1        3
3      Hannan    68     60      22       22       5        7
4       Heard   151    157      60       82       5        6
5  vanHeerden    28     26       4       10      NA       NA
6        Maki   208    195      28       47       2        9
7     Bach(a)    14     12       0        4      NA       NA
8      Ramsay   199    189      45       63       1        4
9      Appavu    12      7       1        1      NA       NA
10   Trazzera   123     99      16       24       4        5
11    Collins    98    139       2       25       1        4
12    Bach(b)   116    117       2       16       0        3
13 Tennenberg   137    145       8       32       5        9
14  Pemberton    32     40      NA       NA       2        3
15     Logghe   338    342      NA       NA      17       15
a <- meta.MH(n.trt, n.ctrl, col.trt, col.ctrl, data=catheter, names=Name, subset=c(13,6,5,3,7,12,4,11,1,8,10,2))
b <- meta.DSL(n.trt, n.ctrl, col.trt, col.ctrl, data=catheter, names=Name,subset=c(13,6,5,3,7,12,4,11,1,8,10,2))
par(mfrow=c(1, 2))
plot(a, main="meta.MH")
plot(b, main="meta.DSL")

f:id:MikuHatsune:20121030172040p:image

 

data(cochrane)
steroid <- meta.MH(n.trt, n.ctrl, ev.trt, ev.ctrl, names=name, data=cochrane)
plot(steroid, col=meta.colors("RoyalBlue"))

このデータは未熟児出産時のステロイド投与が、新生児死亡低下に効果があるかを調べたものらしい。

name: Identifier for the study

ev.trt: Number of deaths in the treated group

n.trt: Number in the treated group

ev.ctrl: Number of deaths in the control group

n.ctrl: Number in the control group

cochrane
          name ev.trt n.trt ev.ctrl n.ctrl
1     Auckland     36   532      60    538
2        Block      1    69       5     61
3        Doran      4    81      11     63
4        Gamsu     14   131      20    137
5     Morrison      3    67       7     59
6 Papageorgiou      1    71       7     75
7      Tauesch      8    56      10     71
data(cochrane)
steroid<-cummeta(n.trt,n.ctrl,ev.trt,ev.ctrl,names=name,data=cochrane,statistic="RR",method="meta.MH")
plot(steroid)
summary(steroid)

f:id:MikuHatsune:20121030172041p:image

 

data(catheter)
b <- meta.DSL(n.trt, n.ctrl, col.trt, col.ctrl, data=catheter, names=Name, subset=c(13,6,5,3,12,4,11,1,8,10,2))
d <- cummeta.summaries(b$logs, b$selogs, names=b$names, method="random", logscale=TRUE)
plot(d,summary.conf=TRUE)
summary(d)

f:id:MikuHatsune:20121030172042p:image

 

data(cochrane)
steroid <- meta.MH(n.trt, n.ctrl, ev.trt, ev.ctrl,
names=name, data=cochrane)
tabletext<-cbind(c("","Study",steroid$names,NA,"Summary"),
c("Deaths","(steroid)",cochrane$ev.trt,NA,NA),
c("Deaths","(placebo)", cochrane$ev.ctrl, NA,NA),
c("","OR",format(exp(steroid$logOR),digits=2),NA,format(exp(steroid$logMH),digits=2))
)
m<- c(NA,NA,steroid$logOR,NA,steroid$logMH)
l<- m-c(NA,NA,steroid$selogOR,NA,steroid$selogMH)*2
u<- m+c(NA,NA,steroid$selogOR,NA,steroid$selogMH)*2
forestplot(tabletext,m,l,u,zero=0,is.summary=c(TRUE,TRUE,rep(FALSE,8),TRUE), clip=c(log(0.1),log(2.5)), xlog=TRUE, col=meta.colors(box="royalblue",line="darkblue", summary="royalblue"))
forestplot(tabletext,m,l,u,zero=0,is.summary=c(TRUE,TRUE,rep(FALSE,8),TRUE), clip=c(log(0.1),log(2.5)), xlog=TRUE, boxsize=0.75, col=meta.colors(box="royalblue",line="darkblue", summary="royalblue"))

f:id:MikuHatsune:20121030172043p:image

 

data(catheter)
a <- meta.MH(n.trt, n.ctrl, col.trt, col.ctrl, data=catheter, names=Name, subset=c(13,6,5,3,7,12,4,11,1,8,10,2))
par(mfrow=c(1, 3))
funnelplot(a$logOR, a$selogOR)
funnelplot(a$logOR, a$selogOR, plot.conf=TRUE, summ=a$logMH, mirror=TRUE)
funnelplot(a, plot.conf=TRUE)

f:id:MikuHatsune:20121030172044p:image

 

data(cochrane)
steroid <- meta.MH(n.trt, n.ctrl, ev.trt, ev.ctrl, names=name, data=cochrane)
par(mfrow=c(2, 2))
## All black, for better photocopying
plot(steroid, col=meta.colors("black"))
## distinguish the summary
plot(steroid,colors=meta.colors(summary="forestgreen"))
data(catheter)
e <- meta.DSL(n.trt, n.ctrl, inf.trt, inf.ctrl, data=catheter, names=Name, subset=c(13,6,3,12,4,11,1,14,8,10,2))
## Truly awful colour scheme to illustrate flexibility
plot(e, colors=meta.colors(summary="green",lines=c("purple","skyblue"), box="red",zero="yellow",text=palette(),background="tomato", axes="lightgreen"))
## Dark blue background popular for presentations.
plot(e, colors=meta.colors(summary="white",lines="#FFFFF0", box="#FFFF50",zero="grey90",text="white",background="darkblue", axes="grey90"))

f:id:MikuHatsune:20121030172045p:image

 

data(catheter)
b <- meta.DSL(n.trt, n.ctrl, col.trt, col.ctrl, data=catheter, names=Name, subset=c(13,6,5,3,7,12,4,11,1,8,10,2))
b
summary(b)

f:id:MikuHatsune:20121030172046p:image

 

data(catheter)
a <- meta.MH(n.trt, n.ctrl, col.trt, col.ctrl, data=catheter, names=Name, subset=c(13,6,5,3,7,12,4,11,1,8,10,2))
a
summary(a)
par(mfrow=c(1, 2))
plot(a)
d <- meta.MH(n.trt, n.ctrl, inf.trt, inf.ctrl, data=catheter, names=Name, subset=c(13,6,3,12,4,11,1,14,8,10,2))
d
summary(d)
## plot with par("fg")
plot(d, colors=meta.colors(NULL))

f:id:MikuHatsune:20121030172047p:image

data(catheter)
a <- meta.MH(n.trt, n.ctrl, col.trt, col.ctrl, data=catheter, names=Name, subset=c(13,6,5,3,7,12,4,11,1,8,10,2))
par(mfrow=c(1, 2))
metaplot(a$logOR, a$selogOR, nn=a$selogOR^-2, a$names, summn=a$logMH, sumse=a$selogMH, sumnn=a$selogMH^-2, logeffect=TRUE)
metaplot(a$logOR, a$selogOR, nn=a$selogOR^-2, a$names, summn=a$logMH, sumse=a$selogMH, sumnn=a$selogMH^-2, logeffect=TRUE,logticks=FALSE)

f:id:MikuHatsune:20121030172048p:image

2012-10-30

トランスクリプトーム・プロテオーム・メタボローム・バイオマーカー・診断基準、転写・翻訳多様性

ゲノム疫学のためのインフォマティクス2012 トランスクリプトーム・プロテオーム・メタボローム・バイオマーカー・診断基準、転写・翻訳多様性

だったのだが、前回の進捗の都合でメタアナリシス

 

ケースコントロールスタディとオッズ比

¥begin{matrix}&AA&Aa&aa¥¥case&49&42&9¥¥control&25&50&25¥end{matrix}

アレルAとアレルaのふたつのオッズ比が出る。

簡単にするためなにかひとつの数にしたい。

無理やりなんらかの制約を入れる。数値は1つにしないと読む人がわからない。

病気=β*アレル本数+c

βは統計処理から算出される。

人数が増えた。

βの推定精度が変わる。

製薬会社がクスリを作りたい。

オッズ比が高ければ高いほどいいか?

有病率? 本人。クスリに重要。

オッズ比? 標的にするのに関連する

アレル頻度? 社会的なあれ。厚労省的に重要性が増す。

予防と診断

予防するために全人口の発病率・有病率を用いて考える。

診断するために特定の疾病を有する確率は、50:50くらい高いかもしれない。少なくとも有病率よりははるかに高いことを疑っている。

2*2の感度特異度表が2*3になっただけ

メタアナリシス:βとORの推定値の出し直し

複数の論文

OR 2 (1.6~2.5)

OR 1.4 (1.2~1.9)

まあ重なった1.8くらいじゃね?

サンプルサイズが多いと重くしよう。

1.73~1.75 (人数多い)

1.3~1.7 (人数少ない)

ならば?

ふたつの分布の組み合わせを眺めてみる。

日本人 OR 2.1 (1.8~2.25)

ロシア人 OR 4.9 (4.7~5.2)

分布が違いすぎる…

日本人 OR 1.5 (1.3~1.7)

ロシア人 OR 1.1 (0.98~1.2)

関連はあるの?と聞かれたら

日本人A OR 1.5 (1.3~1.7), B 1.6 (1.4~1.9), C 1.1 (0.9~1.2)

ロシア人X OR 1.1 (0.98~1.2), Y 1.08 (0.95~1.2), Z 1.1 (1.05~1.3)

一緒にやる?

別々にやる?

OR違う?

アレル頻度も違う?

日本人 ケ70% コ60% OR>1

ロシア人 ケ60% コ70% OR<1

ORが逆転していることもありうる?

アレルは単なるマーカーでしかない→病気の真の責任多型の連鎖不平衡具合(ハプロタイプの構成)による。

 

Rのメタアナリシス用パッケージでrmetaを見つけた。

あとでやってみる。