どこで区切りたいのか(診断基準をデータ処理的に一般化する)2

  • (昨日)は、複数群のポアッソン過程を評価するのに、全群の値の和をとることと、全群についてのすべてが閾値を満足することとによって、分布を評価する方法について考えた
  • 今日は、その比較
  • k群あって、それらが独立とする
  • 全群の値の和がk以上であることと、全群について、値が1以上であることとでは、後者の方が厳しい条件であることを視覚的に示してみる
k<-2 # クラスタ数(左右のときはk=2)
n<-30 # 各クラスタのとりうる値のうち評価する値の上限
# 各クラスタの値がポアッソン分布に従うとして、その平均値rsを作る
nval<-10  
rs<-seq(from=0,to=20,length.out=nval) 
# 出力格納
# Mul...は全クラスタの値の和のがクラスタ数であるような場合
# Min...は全クラスタの値のすべてで値が1以上であるような場合
Muldata<-Mindata<-rep(0,nval) 

for(ii in 1:nval){
#r<-2
r<-rs[ii]
One<-dpois(0:n,r)


Max<-Min<-Mult<-rep(0,n+1)
counter<-rep(0,k)
counter[1]<--1
loop<-TRUE
while(loop){
	counter[1]<-counter[1]+1
	for(i in 1:(k-1)){
		#if(counter[i]==n+1){
		if(sum(counter)==n+1){
			counter[i]<-0
			counter[i+1]<-counter[i+1]+1
		}
	}
	v<-sum(counter)
	minv<-min(counter)
	maxv<-max(counter)
	if(v<=n){
		tmp<-1
		for(i in 1:k){
			tmp<-tmp*One[counter[i]+1]
		}
		#print(v)
		Mult[v+1]<-Mult[v+1]+tmp
		Min[minv+1]<-Min[minv+1]+tmp
		Max[maxv+1]<-Max[maxv+1]+tmp
	}
	
	if(counter[k]==n){
		loop<-FALSE
	}
}
ylim<-c(0,max(One,Mult,Min,Max))
plot(0:n,One,type="b",ylim=ylim)
par(new=TRUE)
plot(0:n,Mult,type="b",ylim=ylim,col="red")
par(new=TRUE)
plot(0:n,Max,type="b",ylim=ylim,col="blue")
par(new=TRUE)
plot(0:n,Min,type="b",ylim=ylim,col="green")

sum(Mult)
Muldata[ii]<-1-cumsum(Mult)[2]
Mindata[ii]<-1-cumsum(Min)[1]
}
ylim<-c(0,1)
plot(rs,Muldata,ylim=ylim,type="b")
par(new=TRUE)
plot(rs,Mindata,ylim=ylim,type="b",col="red")