Acabo de escribir algo de código C para el Theil-Sen, después de buscar un poco en Google (yo no tengo ninguna documentación definitiva). Mi comprensión de la intersección de cálculo es que por primera vez me calcular la mediana pendiente, y luego construir una línea a través de cada punto de datos con esta pendiente, encontrar la intersección de cada línea y, a continuación, tomar la mediana de interceptar.
La única manera en que puedo encontrar para probar el código es comparar los resultados con los de Kendall-Theil Robusta Línea de programa, a partir de la USGS. En un conjunto de datos de los 237 puntos (datos de salud, con una correlación de Pearson de ~0.55), estamos de acuerdo exactamente en la mediana de la pendiente, pero no está de acuerdo en el intercepto (1,4%). Según mis datos, la KTRL interceptar no es la mediana de interceptar, pero es en lugar de 46% de la forma a través de la gama.
Después de algunos escarbando en la KTRL código, parece que calcular la intersección mediante la creación de una sola "línea media", en lugar de la mediana de todos los intercepta. Su intercepción es medianY - medianX * median slope
.
Cualquier comentario sobre cual es la forma "correcta" de hacer esto, si hay uno, o cómo se maneja este asunto en R/etc?
Gracias.