病原体の感染力と死亡率

MikuHatsune2014-10-30

他の病原体と比較したエボラという図を見た。
x軸には一人の感染者が何人の新たな感染者を生むか、y軸には感染した場合の死亡率がプロットされている。
死亡率0〜10%の病原体は多く、この領域だけ対数軸になっているのだが、ここは変換してゴリ押しした。
感染者数が多い病原体は麻疹などの空気感染のものが多い。幸いにもこれらの病原体の死亡率は割と低くなっている。
死亡率が高い病原体はエボラ出血熱のような接触感染、HIVのような性感染、他は糞便など、濃厚に接触しないと感染しないものが多い、という感じ。
このプロットがどうやって作られたのかと不思議がっている知り合いがいたのでRでゴリ押しした。ggplotは使わない主義。
入手したデータとプロット、微妙に違うけど無視!!

# データの読み込み
dat <- read.delim("clipboard")
# y軸について変換する。
# 0 &#12316; 10%のところ
Y <- rep(0, length(dat$case.fatality.rate))
idx <- dat$case.fatality.rate <= 10 & dat$case.fatality.rate > 0
y <- log(dat$case.fatality.rate[idx], 10)
y1 <- (y+2)
Y <- replace(Y, idx, y1)
# 10 &#12316; 100%のところ
idx <- dat$case.fatality.rate > 10
y <- dat$case.fatality.rate[idx]
y2 <- (y-10)/(100-10)*(12-3) + 3
Y <- replace(Y, idx, y2)

# 感染経路
tr <- dat$primary.mode.of.transmission
# 感染経路の色付け
led.col <- c("darkslategray4", "tan", "violet", "black", "skyblue", "orange", grey(0.7))

# 0 - 10% の対数軸が 0 - 3, 10 - 100% の実数軸が 3 - 12 に対応する。
xl <- 0:12
yl <- c(0, 0.1, 1, 10*(1:10))
xmax <- 19 # x軸の最大値
poly.x <- rep(c(0, xmax), each=2) # 灰色に塗りつぶす用
poly.y <- rep(c(-1, 100), each=2) # 灰色に塗りつぶす用
ab.v <- c(1, 5, 7, 12, xmax)      # 縦軸の実線
ab.h <- c(2, 4, 7, 12)            # 横軸の実線
cex <- 1.5                        # 文字サイズ

# ここからプロット
par(mar=c(3, 3, 3, 6))
plot(yl, xl, xaxt="n", yaxt="n", type="n", xlim=c(0, xmax), axes=FALSE, xlab="", ylab="")
mtext("The Microbe-scope", 3, line=1.5, cex=cex)
poly.x <- rep(c(par()$usr[1], par()$usr[2]), each=2)
polygon(poly.x, c(0, 2, 2, 0), col=grey(0.9), border=NA)
polygon(poly.x, c(4, 7, 7, 4), col=grey(0.9), border=NA)
abline(h=xl, v=0:xmax, lty=3, col=grey(0.7))
polygon(poly.x, c(12, 13, 13, 12), col="white", border=NA)
polygon(c(xmax, 20, 20, xmax), poly.y, col="white", border=NA)
abline(h=c(0, ab.h), lty=3, col=grey(0.7))
abline(h=2, v=1, col="black")
abline(v=tail(ab.v, -1), col=gray(0.7))
polygon(c(-xmax, 0, 0, -xmax), poly.y, col="white", border=NA)
polygon(poly.x, c(-12, 0, 0, -12)-10e-3, col="white", border=NA)
axis(1, at=0:xmax, labels=0:xmax, lwd=0, padj=-2.5)
#axis(2, at=xl, labels=paste(yl, "%", sep=""), lwd=0, las=1)
text(par()$usr[1]+0.7, xl, paste(yl, "%", sep=""), xpd=TRUE, pos=2)
tx <- c("not very", "quite contagious", "very", "highly", "vaccinate now!")
text((c(0, head(ab.v, -1)) + ab.v)/2, par()$usr[4], tx, xpd=TRUE)
tx <- c("not too deadly\nhigh-risk group\n(infants, the aged)", "quite deadly\nunlucky/unhealthy", "deadly\nhigh chance", "extremely dead\ndeath likely")
text(xmax, (c(0, head(ab.h, -1)) + ab.h)/2, tx, xpd=TRUE, pos=4)
legend(14.5, 12, legend=levels(tr), text.col=led.col, bg="white", title="PRIMARY TRANSMISSION METHOD", cex=0.7, pch=16, col=led.col)
text(1-0.4, 0-1.2, "R0 = 1\ndesease not\nlikely to spread", xpd=TRUE, pos=4, cex=0.6, col=grey(0.3))
mtext("CONTAGIOUSNESS average basic reproduction number", 1, line=1.2, cex=cex)
mtext("DEADLINESS case fatality rate", 2, line=1.2, cex=cex)
points(dat$average.basic.reproductive.rate, Y, col=led.col[c(tr)], pch=16)
text(dat$average.basic.reproductive.rate, Y, dat$microbe, col=led.col[c(tr)], pos=4, cex=0.7, xpd=TRUE)
microbe	case fatality rate 	average basic reproductive rate 	primary mode of transmission 
Bird Flu (H5N1)	60	1	airborne
Bubonic Plague (untreated)	60	1	bites
C.Difficile	24	1.25	fecal-oral
Campylobacter	1.2	0.19	food
Chicken Pox	0	8.5	airborne
Cholera	1.63	2.13	airborne
Dengue Fever	5	3	bites
Diphtheria	7.5	6.5	body fluids
E.coli	4	1.15	fecal-oral
Ebola	50	2.5	body fluids
Hepatitis B	0.75	4.04	body fluids
HIV (treated)	2.1	3.5	sexual contact
HIV (untreated)	80	3.5	sexual contact
Influenza Pandemic 1918	2.5	3	airborne
Lyme Disease	0.2	4.4	bites
Malaria (P. falciparum)	0.5	80	bites
Malaria (P. malariae)	0.5	16	bites
Measles	0.3	15	airborne
MERS	45	0.5	airborne
MRSA	20	1.625	surfaces
Mumps	1	12.5	airborne
Norovirus	0.01	2	surfaces
Pertussis (Whooping Cough)	4	14.5	airborne
Polio	22	6	fecal-oral
Rabies (treated)	1	1.6	bites
Rabies (untreated)	100	1.6	bites
Rhinovirus	0	6	airborne
Rotavirus	0	17.6	fecal-oral
Rubella	0	6	airborne
Salmonella	1	0.8	food
SARS	9.6	2.4	airborne
Scarlet Fever	0.5	2.8	body fluids
Seasonal Flu	0.1	2.5	airborne
Smallpox	15	6	airborne
Swine Flu (H1N1)	0.2	1.5	airborne
Syphilis (untreated)	33	0.9	sexual contact
Tuberculosis (untreated)	60	5.7	airborne
Typhoid	20	2.8	fecal-oral
Pneumonic Plague (untreated)	100	3.2	airborne