它写在《应用逻辑回归,第二版》一书中。David W. Hosmer 和 Stanley Lemeshow,第 2 页,上图的一个问题是variability in CHD at all ages is large
.
但我无法想象冠心病的变异性。
他们是否通过可变性表示两条直线之间的距离?但是 CHD 的 0 和 1 表示 CHD 的不存在和存在,这两个级别只是名义上定义的。如果我想用1和1.01来表示,那么距离就不会那么大了。
我应该从什么角度来观察冠心病的变异性?
它写在《应用逻辑回归,第二版》一书中。David W. Hosmer 和 Stanley Lemeshow,第 2 页,上图的一个问题是variability in CHD at all ages is large
.
但我无法想象冠心病的变异性。
他们是否通过可变性表示两条直线之间的距离?但是 CHD 的 0 和 1 表示 CHD 的不存在和存在,这两个级别只是名义上定义的。如果我想用1和1.01来表示,那么距离就不会那么大了。
我应该从什么角度来观察冠心病的变异性?
这一点大概是基本的,即冠心病病例几乎发生在任何年龄,但即使对非医学人士来说,这似乎也是平庸的。但从统计上看,可变性不仅仅意味着“存在变化”;这是需要量化的东西。
没有上下文,也没有其他任何说明,图表的主要问题似乎没有说明。只是读者无法判断每个数据点是一个人还是多个人,也无法比较频率,因为在 CHD 上具有相同年龄和状态的人不可避免地会被绘制在同一点上。过度绘图是该图的主要弱点。
将年龄记录到最近的年份是足够合理的,但信息量更大的图表将显示每个年龄的 CHD分数和绝对数字。如何最好地做到这一点取决于所涉及的数字。使用适度的频率点或带状图显示按年龄堆叠的点可能是可行的。对于更大的频率,配对直方图将是一种可能性。
详细信息:编辑 OP 的帖子显示图表代表 100 个主题的标题。我在上面留下了我的评论,因为我认为它们对除了那些碰巧编辑帖子的人之外的所有人都可见的内容是公平的。
PS 用 0 和 1 表示存在-不存在、是或否等二进制状态是一个强有力的约定。这样做的一个主要原因是 0 和 1 的意思表示存在的比例(是等)。OP 建议可能存在诸如 1 和 1.01 之类的编码,原则上答案是肯定的,但没有理由让这种编码比 0,1 的优势更强。在任何情况下,应始终使用适合区分不同状态的比例绘制此类图形。所以使用二进制编码是合理的,并且本身不会使图有问题;实际上,下一步是显示可以与该比例一致地完成的分数(比例,概率)。
作者所说的“变异性”是指以年龄为条件的 CHD 离散度的任何合理测量。
通过将数据分成狭窄的年龄组(如右侧散点图中的不同颜色所示)来研究这一点,计算每个年龄组内 CHD 值的离散度,并将这些离散度与年龄作图(如左侧点图所示) .
因为 CHD 是二进制的并且用 0 和 1 编码,所以它是一个伯努利变量。 任何年龄组的 CHD 值完全由他们的计数总结以及(比如说)那些的计数,,因此具有(未知)概率的二项式分布. 的方法有很多,但我们不必大惊小怪;比例会很好。因此,CHD 分散的适当度量是估计的标准偏差。它可以从(当接近或时)到(当时达到)变化。可能的标准偏差的全部范围显示在左图中的水平轴上。显然,它们都在高(最右边)范围内,解释并证明了“所有年龄段的变异性都很大”的评估。
Hosmer 和 Lemeshow 继续将这些数据分析为八个年龄组,而不是这里显示的十一个。随着年龄组的增加,持续大变异的结论开始被打破:我们可以在右侧图中看到,所有 CHD 值在最低和最高年龄段都是恒定的,根本没有表现出变异性。这是意料之中的:当我们使用许多组时,一些组的值很少,导致每个组内的真实离散度的高度不确定性。作者通过限制组数,在每组内保持相当高的计数,从而获得以年龄为条件的 CHD 分散的稳健图景。
一种更复杂但更不透明的估计条件色散的方法是使用均值的局部估计器对年龄进行 CHD 平滑处理。可以使用与以前相同的公式将此平滑转换为色散的估计量:
我已经突出显示(以红色并通过加粗线)“大”标准偏差 - 即大于中间值的那些。
这些数据可在ftp://ftp.wiley.com/public/sci_tech_med/logistic/alr.zipchdage.dat
找到的文件中找到。用于创建这些图的代码在下面复制给那些想要尝试它们的人。R
#
# Applied Logistic Regression, Table 1.1
#
folder <- "F:/Research/ALR/logistic/" # Location of the data file on your system
x <- read.table(paste0(folder, "chdage.dat"), col.names=c("Id", "Age", "CHD"))
#
# Specify age grouping.
#
n.groups <- 11
k <- 5 # Should be relatively prime to n.groups and near n.groups/2
colors <- rainbow(n.groups)
colors <- colors[(1:n.groups * k) %% n.groups + 1]
#
# Study dispersion ("variability") of CHD by age.
#
breaks <- quantile(x$Age, (0:n.groups)/n.groups) #$
x$AgeGroup <- cut(x$Age, breaks)
s <- aggregate(x$CHD, by=list(x$AgeGroup), function(y) sqrt(mean(y)*(1-mean(y))))
dotchart(s$x, s$Group.1, xlim=c(0, 0.525), pch=16, col=colors, cex=min(1, 10/n.groups),
xlab="Standard Deviation",
main="Variation in CHD by Age Group", cex.main=0.8)
#
# Plot the raw data.
#
names(colors) <- levels(x$AgeGroup)
plot(jitter(x$Age), x$CHD, yaxp=c(0, 1, 1), ylim=c(0,1)+c(-1,1)*0.05,
cex=1.25, col=colors[x$AgeGroup],
xlab="Age (years, jittered)", ylab="CHD",
main="CHD vs. Age", cex.main=0.8)
abline(v = breaks, lty=1, col="Gray")
#
# Plot the smoothed dispersion.
#
CHD.smooth <- lowess(x$Age, x$CHD)
CHD.smooth$y <- pmin(1, pmax(0, CHD.smooth$y))
CHD.sd <- sqrt(CHD.smooth$y * (1-CHD.smooth$y))
large <- CHD.sd > 1/4
plot(CHD.smooth$x, CHD.sd, type="l", lwd=2, col="Gray",
xlab="Age", ylab="Standard Deviation",
main="Smoothed Dispersion of CHD",
cex.main=0.75, cex.lab=0.75, cex.axis=0.75) #$
lines(CHD.smooth$x[large], CHD.sd[large], lwd=3, col="Red")
我相信他们试图提出的观点是,对于任何给定的年龄区间(例如 40-45 岁),CHD=0 和 CHD=1 的数量大致相等。这表明冠心病的年龄不能很好地预测,因此它具有很高的可变性。如果您想对此进行量化,您可以使用二进制熵之类的东西- p(CHD=0) 越接近 1/2,该年龄 bin 的熵/可变性就越大。