1 Star 1 Fork 6

王布衣/ta-lib

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
quantile.go 795 Bytes
一键复制 编辑 原始数据 按行查看 历史
王布衣 提交于 2025-03-05 11:01 +08:00 . 新增计算分位数函数
package algorithms
import (
"fmt"
"slices"
"sort"
)
// Quantile 计算分位数 (0 <= p <= 1)
func Quantile(data []float64, p float64) (float64, error) {
if len(data) == 0 {
return 0, fmt.Errorf("empty dataset")
}
if p < 0 || p > 1 {
return 0, fmt.Errorf("p must be between 0 and 1")
}
// 创建数据副本避免修改原数据
//sorted := make([]float64, len(data))
//copy(sorted, data)
sorted := slices.Clone(data)
sort.Float64s(sorted)
n := float64(len(sorted))
pos := (n - 1) * p // 位置计算公式
// 获取前后索引
lower := int(pos)
upper := lower + 1
weight := pos - float64(lower)
// 处理边界情况
if upper >= len(sorted) {
return sorted[len(sorted)-1], nil
}
// 线性插值
return sorted[lower]*(1-weight) + sorted[upper]*weight, nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/quant1x/ta-lib.git
git@gitee.com:quant1x/ta-lib.git
quant1x
ta-lib
ta-lib
v0.9.4

搜索帮助