更新:问题的症结在于,为了达到的时间复杂度,需要的存储量。O(nlog(n))O(n)
不,是(见(1))元素的时间复杂度的理论下限可能的。O(nlog(n))kthn(n−1)2|xi−xj|:1≤i<j≤n
您可以获得空间,但只能通过在时间中天真地检查的所有组合。O(1)xi−xjO(n2)
好消息是您可以使用在package的函数中规模估计器(参见 (2) 和 (3) 的改进版本和一些时序比较)
。单变量估计器是一个两步(即重新加权)尺度估计器。它具有 95% 的高斯效率、50% 的故障点以及时间和空间的复杂性(此外,它可以很容易地“在线”,在重复使用中减少一半的计算成本——尽管你将不得不深入研究代码来实现这个选项,这很简单)。τscaleTau2()
R
robustbase
τO(n)O(1)R
- X + Y 中选择和排序的复杂性以及具有排序列的矩阵 GN Frederickson 和 DB Johnson,计算机和系统科学杂志第 24 卷,第 2 期,1982 年 4 月,第 197-208 页。
- Yohai, V. 和 Zamar, R. (1988)。通过最小化有效尺度的回归的高分解点估计。美国统计协会杂志 83 406–413。
- Maronna, R. 和 Zamar, R. (2002)。高维数据集的位置和分散的稳健估计。技术计量学 44 307–317
编辑使用这个
- 启动
R
(它是免费的,可以从这里下载)
- 通过键入以下命令安装包:
install.packages("robustbase")
- 通过键入以下内容加载包:
library("robustbase")
- 加载数据文件并运行函数:
mydatavector <- read.table("address to my file in text format", header=T)
scaleTau2(mydatavector)