对于二元 Y,为什么 R 的低拟合如此频繁?

机器算法验证 r 黄土
2022-04-18 08:45:41

我正在尝试探索(而不是正式测试)连续 X 和二进制 Y(0 或 1)之间的各种子组的关系。一个好的捷径似乎是为每个子组绘制平滑的 XY 拟合图。但即使在 X 的不同水平上,Y 的平均值在 0.1 到 0.3 之间,R 的平滑拟合线通常只是简单地拥抱 Y=0 的水平线。这根本没有提供信息,实际上似乎不准确。

我尝试了几种不同的方法来获得更平滑的以及许多不同的 f 值。例如:

x=runif(500,0,1)  #x is continuous
y=1:500
y=ifelse(y < 100,1,0)  #y is now binary with mean ~ 0.2

z=1:500
z=ifelse(z<50 | (z<300 & z>100),1,0)  #z is binary too


plot(x [z==1], y [z==1])
m=lowess(x[z==1], y[z==1])
lines(m, col='blue')  #The line hugs the points at y=0
windows()
scatter.smooth(x [z==1], y[z==1])   

在这种情况下,最后一行确实产生了预期的拟合线,但是当我使用真实数据时,这不是一个可靠的情况。

1个回答

它对我来说一直很好。

y <- rbinom(100, 1, (0:99)/100)
x <- 1:100
m <- loess(y~x)
plot(y ~ x)
lines(predict(m)) # also illustrating the newer loess function that has different defaults
lines(lowess(x,y), col = 'blue')

如果你运行几次,你会注意到蓝线确实倾向于在低 x 值处更接近 0,在更高 x 值处更接近 1。但是 lowess 中的不同默认值会改变这一点。将跨度从默认值 (2/3) 提高到 0.75,它往往会做得更少。

lines(lowess(x,y, f = 0.75), col = 'blue')

loess通常比lowess这些天更受欢迎。它有更多的选择并且更先进。)

其它你可能感兴趣的问题