- 優性・劣性・その間
- ここで、常染色体ローカスは2つのアレルからなること、したがって、3ジェノタイプがあることから、3ジェノタイプに群分けして考えることとする
- これまで(確率的に考える1、2、3)は、ある条件が一つあって、その条件を満足するときの発病時期に関して考えてきた
- これは、優性形式か劣性形式のいずれかであって、発病するジェノタイプと発病しないジェノタイプに2分できること、優性の場合、発病するジェノタイプは、2タイプがあるが、その2ジェノタイプの発病パターンに差がないことに相当する
- 3群で考える。3群の違いは、次の2つ
- フェノタイプ成立に要する蓄積回数:ThresNum
- 「なんらかの理由」により、ジェノタイプ別に必要イベント回数が異なるような場合に相当する
- たとえば、複数の機能単位からなるシステムがあり、機能単位の破壊が進むような場合。破壊される機能単位の数が少ないうちは、残存する機能単位が代償的に働くが、ある閾値を超えるような場合を考える。この出生時の機能単位数の多寡に影響するような遺伝因子の場合がこれに相当するだろう
- 単位時間当たりのイベント発生回数:1/F
- たとえば、機能性分子があって、その機能にジェノタイプごとに大小がある場合が考えられるだろう
- フェノタイプ成立に要する蓄積回数:ThresNum
- ここでは、すべてのジェノタイプでは、そこそこの時間をかければ、全員が発病するようにシミュレーションをしている。実際には、「そもそも発病するためのきっかけ(それが環境要因と呼ばれるものかもしれない)が降りかかる確率がpである」とすれば、ここで示しているヒストグラムは、その高さをp倍してやったものとみなすことも可能である。そうすれば、ジェノタイプ間の比率については現在の表示図をそのまま用いることができる
- 男女別の発病好発年齢分布差のある疾患などのモデルとしてもよさそうな印象がなくはない
- このモデルで考えるのならば、ケースだけで「発病年齢解析」というのもありだろう
NL<-1
TL<-120
Fs<-0.01*2^(8:10)
Niter<-1000
ThresNums<-c(10)
DxTimesGen<-matrix(0,length(Fs),Niter)
par(ask=TRUE)
for(fi in 1:length(Fs)){
F<-Fs[fi]
ThresNum<-ThresNums[1]
DxTimes<-matrix(0,Niter,NL)
for(ii in 1:Niter){
NR<-ThresNum
Rmat<-matrix(0,NL,NR)
for(i in 1:NL){
Rmat[i,]<-rexp(NR,1/F[i])
}
CumEventMat<-t(apply(Rmat,1,cumsum))
DxTime<-rep(0,NL)
for(i in 1:NL){
DxTime[i]<-CumEventMat[i,ThresNum[i]]
}
DxTimes[ii,]<-DxTime
}
DxTimesGen[fi,]<-DxTimes[,1]
}
par(mfcol=c(2,2))
h<-hist(DxTimesGen,breaks=0:ceiling(max(DxTimesGen)),xlim=c(0,TL),ylim=c(0,0.08/3),
xlab="Age of Dx(year)",ylab="Fraction of Dx",main="All",col=3,freq=FALSE)
for(i in 1:length(Fs)){
tt<-paste("genotype ",i)
hist(DxTimesGen[i,],breaks=0:ceiling(max(DxTimesGen)),xlim=c(0,TL),ylim=c(0,0.08), xlab="Age of Dx(year)",ylab="Fraction of Dx",main=tt,col=2,freq=FALSE)
}
par(mfcol=c(1,1))
NL<-1
TL<-120
Fs<-0.01*2^(10)
Niter<-1000
ThresNums<-c(6,8,10)
DxTimesGen<-matrix(0,length(ThresNums),Niter)
par(ask=TRUE)
for(ti in 1:length(ThresNums)){
ThresNum<-ThresNums[ti]
F<-Fs[1]
DxTimes<-matrix(0,Niter,NL)
for(ii in 1:Niter){
NR<-ThresNum
Rmat<-matrix(0,NL,NR)
for(i in 1:NL){
Rmat[i,]<-rexp(NR,1/F[i])
}
CumEventMat<-t(apply(Rmat,1,cumsum))
DxTime<-rep(0,NL)
for(i in 1:NL){
DxTime[i]<-CumEventMat[i,ThresNum[i]]
}
DxTimes[ii,]<-DxTime
}
DxTimesGen[ti,]<-DxTimes[,1]
}
par(mfcol=c(2,2))
h<-hist(DxTimesGen,breaks=0:ceiling(max(DxTimesGen)),xlim=c(0,TL),ylim=c(0,0.05/3),
xlab="Age of Dx(year)",ylab="Fraction of Dx",main="All",col=3,freq=FALSE)
for(i in 1:length(ThresNums)){
tt<-paste("genotype ",i)
hist(DxTimesGen[i,],breaks=0:ceiling(max(DxTimesGen)),xlim=c(0,TL), ylim=c(0,0.05),xlab="Age of Dx(year)",ylab="Fraction of Dx",main=tt,col=2,freq=FALSE)
}
par(mfcol=c(1,1))