You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何scdensity函数的boundedRight约束无法正常工作?

关于scdensity包核密度估计右边界约束失效的问题

我需要对取值范围在[0,1]的比例数据做核密度估计,并获取密度估计中特定分位数的位置。R语言的scdensity包同名函数看似能满足需求,但设置左边界(boundedLeft + lowerBound=0)时正常生效,设置右边界(boundedRight + upperBound=1)却达不到预期——x>1的区域仍有非零密度估计;同时设置双边界时也只有左边界生效。

复现代码

# 加载所需包
library(scdensity)

# 示例数据
x <- c(0.01, 0.3, 0.5, 0.99)

# 左边界示例(正常生效)
dens1 <- scdensity(x, 
                   constraint = c("boundedLeft"),
                   opts = list(lowerBound = 0))
plot(dens1)
#> Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
#> collapsing to unique 'x' values

# 右边界示例(失效)
dens2 <- scdensity(x, 
                   constraint = c("boundedRight"),
                   opts = list(upperBound = 1))
plot(dens2)

# 双边界示例(仅左边界生效)
dens3 <- scdensity(x, 
                   constraint = c("boundedLeft", "boundedRight"),
                   opts = list(lowerBound = 0, upperBound = 1))
plot(dens3)
#> Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
#> collapsing to unique 'x' values

问题分析与解决方案

目前scdensity包的右边界约束逻辑存在bug,无法正确限制x>1区域的密度估计。可以通过以下两种替代方法实现[0,1]区间的边界约束核密度估计:

方法1:使用ks包的边界约束核密度估计

ks包的kde函数原生支持双边界约束,计算逻辑更可靠:

library(ks)

# 生成带[0,1]双边界约束的核密度估计
dens_ks <- kde(x, bounds = list(lower = 0, upper = 1))
# 绘图查看结果
plot(dens_ks, main = "双边界约束核密度估计(ks包)")

方法2:变量变换法(logit变换)

将[0,1]区间的比例数据通过logit变换映射到实数域,在变换后空间做无约束核密度估计,再转换回原空间:

# 对数据做logit变换
x_logit <- qlogis(x)
# 计算变换后数据的核密度
dens_logit <- density(x_logit, n = 1000)
# 将密度值转换回原[0,1]区间的密度
x_original <- plogis(dens_logit$x)
dens_original <- dens_logit$y / (x_original * (1 - x_original))

# 绘图展示
plot(x_original, dens_original, type = "l", xlim = c(0,1),
     xlab = "x", ylab = "密度", main = "logit变换核密度估计")

获取特定分位数

以ks包的结果为例,通过累积分布函数求解分位数:

# 计算累积分布函数(CDF)
cdf_vals <- cumsum(dens_ks$estimate) * diff(dens_ks$eval.points[[1]])[1]
# 找到中位数(0.5分位数)的位置
median_x <- dens_ks$eval.points[[1]][which.min(abs(cdf_vals - 0.5))]
# 输出结果
cat("中位数位置:", median_x, "\n")

内容的提问来源于stack exchange,提问作者Gregory

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 11:28:19