He estado recopilando datos en el trabajo para determinar las pérdidas en algunos cables que conectan habitaciones, y ahora necesito tomar esos datos (~1500 puntos) y, debido a las limitaciones del software, reducirlos a 72 puntos que sigan manteniendo la forma de la curva.
He estado trabajando en excel y he intentado buscar esto, pero el problema es que no puedo coger "cada enésima fila" y listo, ya que distorsionaría la forma de la curva.
EDIT: He intentado no complicar demasiado la pregunta explicando exactamente cómo se utiliza esto y ese ha sido mi error, ya que hace que mi pregunta sea bastante ambigua. Estos datos son las pérdidas de inserción para una cierta distancia de los cables en el interior y el exterior de una cámara (Hay un conector de alta frecuencia que los conecta en el medio). Utilizamos software para manejar los equipos de prueba y, al menos para las pruebas en las que el software va de frecuencia en frecuencia, el software tiene en cuenta estas pérdidas buscándolas en una base de datos para un cable (o grupo de cables) concreto y utiliza la interpolación lineal entre puntos especificados para estimarlas mejor. El problema es que este software no permite que un cable tenga 1500 puntos para sus pérdidas, sino que lo limita a 72 puntos como máximo.
Lo que tengo que hacer es tomar estos datos y obtener de ellos 72 puntos que permitan a este software calcular con la mayor precisión las pérdidas. Podría hacerlo a mano y lo haré si no encuentro una solución mejor, pero preferiría evitar el tiempo que me llevaría procesar 12 o más conjuntos de estos datos, especialmente si pudiera desarrollar un guión o una pequeña pieza de software para mi empresa que les ayudara en el futuro cuando vuelvan a realizar estas mediciones.
EDIT_2: El segundo gráfico con la línea roja es básicamente lo que necesito obtener del conjunto de 1500 puntos de datos. No son los 72 puntos completos que necesito para ello, ya que empecé a buscar una manera de automatizar este proceso antes incluso de llegar a la mitad.
Además, soy nuevo aquí, así que no estoy muy seguro de si este es el lugar correcto para publicar esta pregunta, ni sé si he utilizado las etiquetas adecuadas para ello.
0 votos
¿Los puntos de datos que conservas tienen que proceder del conjunto de datos original? Si no es así, lo mejor sería ajustar una curva a los datos y utilizarla para generar nuevos puntos de datos que reflejen exactamente la tendencia.
1 votos
Estoy de acuerdo con @MatthewDrury, y para una solución simple de Excel parece que una ley de potencia podría ir bien. Si usted tiene que sub-muestra de los datos originales, un enfoque estándar es simplificación de curvas pero no es fácil de hacer en Excel (¿se necesitaría VBA?).
0 votos
Si desea suavizar la curva conservando su forma, puede probar a utilizar la media móvil ( es.wikipedia.org/wiki/Promedio_de_movimiento ) en lugar de los datos originales. Debería ser fácil de hacer en Excel.
1 votos
Cuando dices "mantener la forma de la curva", la curva visualizada muestra muchos meneos. Tendrás que ser bastante más preciso sobre lo que quieres mantener y lo que no.
1 votos
Tu pregunta aún no es lo suficientemente clara como para saber lo que necesitas, pero podrías hacerlo bien con un spline cúbico natural en una escala logarítmica. Si quieres poder hacer interpolación lineal, un spline lineal ordinario podría ser suficiente. He aquí un ajuste de línea quebrada con sólo 13 puntos -- Si eso es lo que necesitas, hay varias formas de conseguir algo parecido.
0 votos
He actualizado la pregunta, espero que ayude a transmitir lo que necesito hacer. @Glen_b Las pequeñas ondulaciones (que más o menos parecen ruido) no me importa mantener, lo que quiero preservar son las irregularidades más grandes. Aquí están los puntos de datos que recogí a mano antes de buscar un método mejor .
3 votos
¿Cómo mediría la calidad de la curva de muestreo descendente? Creo que si puede formularlo de forma más específica, aparte de la inspección visual, podremos ayudarle mejor.
0 votos
Cuando dices "en Excel", eso tiende a limitar las respuestas que obtendrás. En términos de funcionalidad incorporada, es fácil hacer regresión lineal/semilog/log, y no estoy seguro de qué más. Si VBA está sobre la mesa, entonces hay más posibilidades. (Yo no uso VBA, pero creo que se ejecuta de forma nativa en Excel, y por ejemplo este parece ser una versión VBA del algoritmo estándar de simplificación de curvas que mencioné anteriormente).
0 votos
Acabo de empezar una respuesta a su pregunta, pero me he dado cuenta de que no dispongo de información suficiente. Necesito dos datos 1) ¿Cuál es la variable en el eje y? ¿Se trata de un recuento u otra información de distribución (y por lo tanto el gráfico es una especie de histograma con estimador de densidad kernel) o se trata de una segunda variable (y por lo tanto el gráfico es un diagrama de dispersión). 2) En caso de que sea un gráfico de dispersión, se parece mucho a una serie temporal, en cuyo caso x sería el tiempo e y el nivel del resultado. ¿Se trata de datos de series temporales?
0 votos
No está claro lo que necesita. ¿Las variaciones locales son ruido o datos? Si son datos útiles, el procedimiento es distinto que si son sólo ruido.
0 votos
Las soluciones a la pregunta (notablemente similar) en stats.stackexchange.com/preguntas/35220 puede ser útil. Sospecho que mi segunda respuesta en stats.stackexchange.com/a/35268/919 que es totalmente automático, podría funcionar bien aquí también.
0 votos
@Glen_b ¿Puedo preguntarte cómo lo has conseguido? "ajuste de línea quebrada por ojo" con los datos de OP?
0 votos
Fue hace un par de años (así que no recuerdo los detalles exactos), pero diría que simplemente utilicé algún paquete de dibujo que permite manipular splines lineales en 2D (muchos lo hacen) para establecer un conjunto de puntos cercanos a la serie observada y luego empujé los puntos hasta que se parecieran lo más posible a la línea sin dedicarle demasiado tiempo (es decir, literalmente lo juzgué a ojo). Se trataba simplemente de ilustrar lo que se conseguiría con un ajuste de línea quebrada, no de estimar realmente uno (aunque existen paquetes para hacerlo), para que el PO pudiera indicar si eso sería suficiente.