gpt4 book ai didi

r - 使用移动平均或内核平滑对二进制变量进行平滑

转载 作者:行者123 更新时间:2023-12-04 23:58:20 25 4
gpt4 key购买 nike

我有以下形式的数据:

x      y
0 0
0.01 1
0.03 0
0.04 1
0.04 0
x从0到1是连续的,并且间隔不相等,并且y是二进制的。

我想使用R在x轴上平滑 y,但找不到正确的包。我发现的内核平滑函数会产生 x的密度估计值,或者会在x的末尾给出错误的估计值,因为它们将在小于0且大于1的区域中求平均值。

我还想避免像Loess给定这样的线性平滑器,然后避免 y的二进制形式。我见过的移动平均函数采用等距的x值。

您是否知道任何R函数都可以平滑且理想地具有带宽选择过程?我可以编写一个移动平均函数并进行交叉验证以确定带宽,但是我更喜欢找到经过审查的现有函数。

最佳答案

我建议使用类似的东西

d <- data.frame(x,y) ## not absolutely necessary but good practice
library(mgcv)
m1 <- gam(y~s(x),family="binomial",data=d)

这将(1)尊重数据的二进制性质(2)使用广义交叉验证来进行自动平滑度(在您的术语中为“带宽”)选择。


plot(y~x, data=d)
pp <- data.frame(x=seq(0,1,length=101))
pp$y <- predict(m1,newdata=pp,type="response")
with(pp,lines(x,y))

或者
library(ggplot2)
ggplot(d,aes(x,y))+geom_smooth(method="gam",family=binomial)

获得预测/绘制结果。

(我希望您的真实数据集具有5个以上的观察值...否则,它将失败...)

关于r - 使用移动平均或内核平滑对二进制变量进行平滑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13916909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com