期待値を揃えて、3分布を描いてみる〜臨床マーカーの値の分布〜下限のある値の分布〜

  • 対数正規分布の場合。期待値がMean=1のとき、2つのパラメタの関係はm+s^2/2=\log(Mean)

Mean <- 1

x <- seq(from=0,to=5,length=100)


s <- seq(from=0,to=2,length=11)
s <- s[-1]
m <- log(Mean)-s^2/2

X <- matrix(0,length(m),length(x))
R <- matrix(0,length(m),10000)
for(i in 1:length(m)){
	
		X[i,] <- dlnorm(x,m[i],s[i])
		R[i,] <- rlnorm(10000,m[i],s[i])


}
matplot(x,t(X),type="l")
apply(R,1,mean)
  • ワイブル分布の場合


Mean <- 1

x <- seq(from=0,to=5,length=100)

m <- seq(from=0,to=10,length=20)
m <- m[-1]
s <- Mean/gamma(1+1/m)

X <- matrix(0,length(m),length(x))
R <- matrix(0,length(m),10000)
for(i in 1:length(m)){
	
		X[i,] <- dweibull(x,m[i],s[i])
		R[i,] <- rweibull(10000,m[i],s[i])


}
matplot(x,t(X),type="l")
apply(R,1,mean)
  • フレシェ分布で期待値がMean=1のとき、2つのパラメタの関係はs=\Gamma(1-\frac{1}{m}

Mean <- 1

x <- seq(from=0,to=5,length=100)

m <- seq(from=1,to=10,length=20)
m <- m[-1]

s <- Mean/(gamma(1-1/m))

X <- matrix(0,length(m),length(x))
R <- matrix(0,length(m),10000)
for(i in 1:length(m)){
	if(m[i]>0){
		X[i,] <- dfrechet(x,0,s[i],m[i])
		R[i,] <- rfrechet(10000,0,s[i],m[i])
	}

}
matplot(x,t(X),type="l")
apply(R,1,mean)