(11) 有害事象

# 有害事象

N<-500
# 単位期間にDという有害事象が起きる確率
pD<-0.1
D<-runif(N)/pD
# 単位期間にVという有害事象が起きる確率
pV<-1
V<-runif(N,min=0,max=1)/pV

t<-seq(from=0,to=1,length=100)
xlim<-ylim<-c(0,1)
plot(rep(0,length(t)),t,xlim=xlim,ylim=ylim,type="l")
Thres<-0.1
for(i in 1:N){
	#par(new=TRUE)
	if(D[i]<1){
		col<-1
		segments(0,i/N,D[i],i/N,col=col)
		if(D[i]-V[i]<Thres && V[i]<D[i]){
			col<-2
			segments(V[i],i/N,D[i],i/N,col=col)
		}
		
		points(D[i],i/N,col=1,pch=15)
		if(V[i]<D[i]){
			points(V[i],i/N,col=2,pch=19)
		}
		

	}
}

  • ある事象が確率的に別の事象を引き起こしがちだというシミュレーション
N<-100
# 単位期間にDという有害事象が起きる確率
pD<-1
D<-runif(N)/pD
# 単位期間にVという有害事象が起きる確率
pV<-1

# Vの後、probの確率で、Dが短期間に引き起こされる(有害事象が起きる)
V<-runif(N,min=0,max=1)/pV
VearlierD<-which(V<D)
SideEffectM<-0.01
SideEffectV<-0.00001
prob<-0.5
Sideeffected<-sample(VearlierD,length(VearlierD)*prob)
D[Sideeffected]<-V[Sideeffected]+abs(rnorm(length(Sideeffected),SideEffectM,sqrt(SideEffectV)))
t<-seq(from=0,to=1,length=100)
xlim<-ylim<-c(0,1)
for(i in 1:length(t)){
	plot(rep(0,length(t)),t,type="l",xlim=xlim,ylim=ylim)
	for(j in 1:N){
		if(t[i]<min(D[j],V[j])){
			segments(0,j/N,t[i],j/N)
		}else{
			if(D[j]<V[j]){
				segments(0,j/N,D[j],j/N)
			}else{
				segments(0,j/N,V[j],j/N)
				col<-1
				if(t[i]>D[j])col<-2
				segments(V[j],j/N,min(t[i],D[j]),j/N,col=col)
			}
		}
		if(D[j]<t[i])points(D[j],j/N,pch=15)
		if(V[j]<t[i] && V[j]<D[j])points(V[j],j/N,pch=19,col=2)
	}
}