从散点图中查找数据子集的方差

Finding variance of a subset of data from a scatterplot

我有一个 x 与 y 的散点图。我在情节的中间画了一条斜线。我想计算 abline 左侧点的方差,我想计算 abline 右侧点的方差。这很可能是一个相对简单的问题,但我正在努力寻找解决方案。任何建议表示赞赏。提前致谢。

    x = rnorm(100,mean=12,sd=2)
    y = rnorm(100,mean=20,sd=5)
    data = as.data.frame(cbind(x,y))
    plot(x=x,y=y,type="p")
    abline(v=12,col="red")

在您的示例代码中有一条垂直线 v = 12。您的数据点 (x, y) 分为两组,即 x < 12x >= 12。做这样的事情很简单:

var(y[x < 12])
var(y[x >= 12])

但我们也可以使用一次调用 tapply:

tapply(y, x < 12, FUN = var)

更一般地说,如果您有一条线 y = a * x + b,其中 a 是斜率,b 是截距,您的数据点 (x, y) 将分为两组: y < a * x + b(在线下方)和y >= a * x + b(在线上方),以便您可以使用

tapply(y, y < a * x + b, FUN = var)