Actualización: El quid de la cuestión es que para lograr la complejidad de tiempo O(nlog(n)) , se necesita en el orden de almacenamiento O(n) .
No, O(nlog(n)) es el límite teórico inferior para la complejidad temporal de (ver (1)) seleccionar el elemento kth entre todos los n(n−1)2 posibles|xi−xj|:1≤i<j≤n.
Puede obtener espacio O(1) , pero solo verificando ingenuamente todas las combinaciones de xi−xj en el tiempo O(n2) .
La buena noticia es que puede usar el estimador de escala τ (consulte (2) y (3) para obtener una versión mejorada y algunas comparaciones de temporización), implementado en la función
scaleTau2()del Rpaquete robustbase. El estimador τ univariado es un estimador de escala de dos pasos (es decir, re-ponderado). Tiene una eficiencia gaussiana del 95 por ciento, un punto de ruptura del 50 por ciento y la complejidad del tiempo O ( n ) y el espacio O ( 1 ) (además se puede hacer fácilmente 'en línea', reduciendo la mitad de los costos computacionales en uso repetido, aunque usted tendrá que cavar en el Rcódigo para implementar esta opción, es bastante sencillo de hacer).
- La complejidad de la selección y clasificación en X + Y y matrices con columnas ordenadas GN Frederickson y DB Johnson, Journal of Computer and System Sciences Volume 24, Issue 2, April 1982, páginas 197-208.
- Yohai, V. y Zamar, R. (1988). Estimaciones de regresión de alto punto de ruptura mediante la minimización de una escala eficiente. Revista de la Asociación Americana de Estadística 83 406–413.
- Maronna, R. y Zamar, R. (2002). Estimaciones sólidas de ubicación y dispersión para conjuntos de datos de alta dimensión. Technometrics 44 307–317
Editar Para usar esto
- Arranca
R(es gratis y se puede descargar desde aquí )
- Instale el paquete escribiendo:
install.packages("robustbase")
- Cargue el paquete escribiendo:
library("robustbase")
- Cargue su archivo de datos y ejecute la función:
mydatavector <- read.table("address to my file in text format", header=T)
scaleTau2(mydatavector)