Jed y yo estamos aquí. Vamos a hablar sobre la suspensión de una bicicleta de montaña y sobre algunas de las herramientas geniales que encontramos en JMP y que nos han ayudado a comprender cómo se correlacionan la suspensión y algunas reseñas que vemos en internet. Esta charla surgió de la Discovery Summit del año pasado. Jed y yo nos reunimos y yo quería saber: "Bien, ¿qué es Functional Data Explorer? ¿Cómo puedo usarlo? ¿Y cuáles son algunas de las maneras en que puede beneficiarme?". Jed, conociéndome un poco, empezó a hablar sobre bicicletas de montaña. Fue fácil convencerme. Me emocionó. Eso dio lugar a lo que finalmente se convirtió en esta presentación.
Una pequeña advertencia sobre nosotros y esta presentación. No estamos afiliados a ninguna empresa de bicicletas. No somos expertos en la industria. Consultamos algunas reseñas de Bike Radar y analizamos cómo analizaban las bicicletas. Luego, extrajimos algunas curvas de suspensión del software Linkage, disponible en internet.
No usaría esta presentación para decidir qué bicicleta deberías comprar próximamente. No es nuestra intención. Nuestra intención es mostrar algunas de las herramientas realmente geniales y potentes que existen en JMP para comprender datos que tradicionalmente podrían ser más difíciles de comprender.
Antes de empezar, hablemos un poco sobre las bicicletas de montaña y su funcionamiento. En las bicicletas de montaña, normalmente se cuenta con suspensión delantera y trasera. La suspensión delantera es muy sencilla: se mueve hacia arriba y hacia abajo a lo largo de la horquilla de forma lineal. La suspensión trasera es mucho más compleja. La rueda trasera se mueve hacia arriba y hacia abajo, y suele tener algún tipo de varillaje que conecta ese movimiento con un amortiguador ubicado en el centro del cuadro de la bicicleta. Ese varillaje puede tener diversas propiedades, que repasaremos en las cinco que mencionamos.
Pero la más fácil de entender es probablemente la relación de apalancamiento. Es decir, si la rueda se mueve un milímetro, ¿cuánto se comprime el amortiguador? ¿Se comprime también un milímetro? Eso sería una relación de apalancamiento de uno. Si el amortiguador se comprime mucho menos, la relación de apalancamiento será mayor, y ese valor varía a lo largo de todo el recorrido de la rueda. A medida que la rueda se mueve, ese valor cambia, obteniendo así una curva o datos funcionales que definen el enlace de la bicicleta.
Extrajimos cinco de estas curvas. La primera es la anti-squat. Se relaciona con cómo la bicicleta acelera, ¿qué hace? Al pedalear, ¿el pedaleo hace que la bicicleta se incline hacia adelante, se hunda en el recorrido o se mantenga relativamente nivelada? La anti-squat se relaciona con cómo reacciona la suspensión a esa fuerza de aceleración.
La anti-subida es otra de esas propiedades que, al frenar, al disminuir la velocidad, ¿se inclina la moto hacia adelante? ¿Se comprime la suspensión? La anti-subida es otra característica que los diseñadores de bicicletas ajustan para definir la bicicleta o mejorar su rendimiento.
Hablamos un poco sobre la relación de apalancamiento. Esta se refiere a cuánto se comprime el amortiguador al moverse la rueda. Lo realmente interesante de la relación de apalancamiento, y hablaremos de ello más adelante, es que está ajustada a un amortiguador específico. En las bicicletas, existen suspensiones neumáticas y de muelles, y dependiendo de cuál se use, se observarán diferentes curvas de relación de apalancamiento. Lo importante es que la relación de apalancamiento está ajustada, pero no de forma aislada, sino que también depende en gran medida del tipo de amortiguador que se use.
La trayectoria del eje es otro ejemplo. A medida que la rueda sube, ¿se mueve mucho hacia atrás, se mueve directamente hacia arriba y hacia abajo, o se mueve ligeramente hacia adelante? En este gráfico, se puede ver que el eje Y representa la distancia recorrida por la rueda y el eje X su posición de adelante hacia atrás. La rueda comienza en cero. Y luego, en este gráfico azul, se puede ver que inicialmente retrocede ligeramente antes de avanzar. Imagínate, al bajar por un sendero, si avanzas, querrías que la rueda se moviera hacia atrás y evitara un obstáculo en lugar de hacia adelante y chocar con él. La trayectoria del eje es bastante intuitiva y permite comprender cómo podría beneficiar a una bicicleta.
El último problema es el retroceso del pedal. Esto ocurre cuando la rueda se mueve, y a veces la distancia entre los pedales y la rueda se amplía un poco, lo que hace que los pedales se muevan hacia atrás. Esto generalmente no es bueno, ya que puede causar una sensación de inestabilidad al andar en bicicleta.
Esas son las curvas que nos interesan. Ese es el espacio que nos interesa, y podemos obtenerlas todas desvinculadas. La pregunta ahora es, ¿cómo obtenemos reseñas? Estoy de vuelta en la era pre-JMP 18, pero puedo escribir un script en Python, y no voy a entrar en detalles sobre su funcionamiento. Si alguien tiene alguna pregunta, no dude en contactarme. Con gusto responderé. Pero lo que esto hace es que tengo un script en Python en mi escritorio que JMP va a ejecutar. Ese script se conectará con Bike Radar, recopilará varias reseñas y luego generará un par de tablas de datos de JMP que podemos consultar.
La primera es esta tabla resumen. Esta proporciona una serie de metadatos sobre la reseña de la bicicleta. Nos indica qué bicicleta es, y si se trata de una reseña completa, una reseña a largo plazo o una primera prueba, su fecha de publicación. Nos proporciona algunos comentarios breves, la puntuación general, la URL, el tipo de bicicleta y el autor. Finalmente, llegamos a la esencia de la reseña. Esto nos proporciona la bicicleta, la sección específica y el texto de la reseña.
Cada reseña que hemos recopilado aquí consta de tres componentes: la sección de subida, la sección de bajada y la sección final. Cada bicicleta incluye cada una de estas secciones para analizar si sube bien, si sube bien, si baja bien, y en general, ¿qué opina el usuario sobre la bicicleta?
Hemos hablado de los dos componentes que usaremos para nuestro análisis. Tenemos las curvas, que podemos generar con este software de vinculación, y las revisiones.
Pero ahora, ¿cómo podemos tomar todo esto y presentarlo de forma que JMP pueda comprenderlo y analizarlo? Para ello, con nuestro método de vinculación, obtenemos una imagen. La pregunta es: ¿cómo podemos convertir esa imagen en un formato que JMP pueda comprender?
Lo bueno de JMP, y que aprendí hace poco, es que abre imágenes. Para ello, es necesario ejecutar un poco de JSL. Si lo haces, puedes obtener una imagen y luego una tabla que muestra las ubicaciones X e Y. Ahí es donde se encuentra el píxel en el espacio o en la imagen, y luego te dará los valores de rojo, verde y azul de cada píxel de la imagen.
Genial. Aún no obtenemos lo que queremos. Necesitamos esta curva, pero podemos acercarnos mucho más. Si pudiéramos identificar todos los valores azules, eso nos permitiría... Bien, podemos obtener todos los valores azules y, si los mapeamos en este espacio gráfico, podríamos generar una curva.
Me gusta mucho Workflow Builder. Me facilita mucho la vida porque puedo hacer las cosas gráficamente y obtener resultados, así que creé un flujo de trabajo rápido que realiza una agrupación en K-means. Esta imagen es atractiva porque solo tiene tres colores. Si generamos tres grupos y guardamos la fórmula para esos grupos en la tabla, podemos obtener un gráfico con las posiciones X e Y de esta tabla, y luego podemos colorearlos según la fórmula del grupo. Como pueden ver, tenemos la fórmula del grupo uno, que representa todos nuestros píxeles azules. Podemos usarla para empezar a decir: "Bien, aquí están los píxeles azules. ¿Cuáles son esas posiciones? Sabemos cuál es su posición global en la imagen. Tenemos que asignarlos a su posición en este gráfico".
Nuevamente, no voy a entrar en esto en profundidad porque es un poco complicado, pero les mostraré cómo se ve el guión final que se nos ocurrió.
Muestra la imagen y dice: "Bien, tienes que darme los valores Xmín, Xmáx, Ymín e Ymáx de esa gráfica". Voy a introducir que va de 0 a 130 y luego de 0,45 a 1,35. Haz clic en "Aceptar". Lo que obtenemos es... Arrastra todo aquí. Tenemos una tabla de datos con nuestros valores X, Y, y luego la propiedad y las bicicletas que estamos viendo. Esta es solo una imagen de muestra. Pero puedes ver, aquí está la gráfica con la que empezamos. Aquí está nuestra gráfica extraída. Lo hicimos introduciendo estos valores, observando los píxeles azules y calculando: "Bien, dada nuestra posición global, así es como se asigna a ese espacio de 0 a 130 milímetros que definimos".
No hace falta decir que este no es un proceso perfecto, pero el diseño es bastante bueno. Aquí están las curvas de cada una. Tarda un poco. Jed y yo pasamos un par de horas una tarde escribiendo números, pero después de un rato, ya tenemos todas las curvas disponibles para consultar.
Ahora hablaremos de: "Bien, ¿qué hicimos con el texto? ¿Cómo logramos que el texto tuviera un formato que pudiéramos usar?"
Gracias, Landon. Como dijo Landon, tenemos el texto y los archivos guardados como tres archivos CSV separados: uno para la subida, otro para la conclusión y otro para la parte descendente. Los guardé en el escritorio. Por si no lo sabías, hay una función muy útil llamada "Importar varios archivos". La usamos. Pero, para ahorrar tiempo, voy a hacer un poco de trampa y simplemente ejecutaré el script. Esto básicamente importó los tres archivos en un solo archivo JMP. Con un poco de magia de recodificación con el botón derecho, puedo cambiar el nombre del archivo a "conclusión, descendente y subida".
Ahora tengo mis datos formateados y listos para usar. ¿Qué quiero decir con "listos para usar"? Necesitamos convertir el texto de cada uno de estos campos en números, algo que podamos manipular y usar para generar estadísticas. Una de mis funciones favoritas y menos usadas de JMP es el Explorador de Texto. Es realmente muy sencillo. Si hay texto en una columna, entonces, bueno, es el texto. Podemos ignorar todo lo demás porque no vamos a usar nada más. Es una tarea bastante sencilla.
Por cierto, debo mencionar que el análisis de sentimientos es una función de JMP Pro. Si tienes JMP Pro, puedes usar este análisis, que básicamente revisa todo el texto y le asigna una puntuación de sentimiento o de sentimiento. De inmediato, podemos ver que los usuarios, en general, tienen una opinión positiva sobre estas bicicletas.
Pero una cosa que quiero señalar es que existe esta noción de curación de texto. Me desplazo hacia abajo hasta este pedal bob, suena raro. No es alguien diciéndole a Bob que pedalee. En el ciclismo de montaña, esta noción de pedal bob es cuando la suspensión sube y baja mientras pedaleas, y es algo malo. ¿JMP tiene en cuenta esta extraña palabra pedal bob? No por defecto, pero es muy fácil de agregar. Voy a hacerlo con el análisis de sentimiento. Voy a gestionar estos términos de sentimiento. Puedo entrar y si puedo escribir, puedo escribir pedal bob. Puedo darle una puntuación de -50, puedo agregarlo. Luego, observe que cuando hago clic en Aceptar aquí, esa puntuación cambiará solo un poco. Esto es, si bien es algo fácil, también requiere mucho tiempo.
Tengo varios términos. De hecho, era Landon un sábado. Revisó el documento, realizó toda la selección y guardó los términos de sentimiento en un archivo de texto. Lo hice prácticamente de forma manual una vez. Luego, JMP los guardará en el portapapeles y puedo controlar V para pegarlos. Al pulsar "Aceptar", se realiza un ajuste. Puedo hacer lo mismo con los términos de negación e intensificación con archivos, solo que archivos de texto. Pero en lugar de que me vean copiar y pegar, voy a tomar un pequeño atajo.
Ahora, esto aplica a todos los documentos localizados para este corpus o conjunto de documentos. Tenemos el idioma listo, así que vamos a empezar a confiar en estas puntuaciones. Ahora que confío en las puntuaciones, quiero hacer algo con ellas. Para ello, la forma más sencilla es ir al triángulo rojo y pulsar "Guardar puntuaciones del documento". Al hacerlo, voy a la tabla. Esta tabla, que antes solo contenía nuestro texto, ahora tiene algunas columnas adicionales con cifras de sentimiento positivo y negativo, así como un sentimiento general.
Ya casi estoy listo. Lo único que necesito hacer a partir de ahora es usar la función de tabulación para separar mejor los datos, de modo que, para las subidas, obtenga los valores totales positivos y negativos. Lo mismo ocurre con las conclusiones: valores totales positivos y negativos, y para las bajadas. Si convierto esto en una tabla de datos, tengo los datos listos para analizarlos. Tengo cada bicicleta, y luego para las subidas, las bajadas y el total. Esto significa que puedo usar el Constructor de Gráficos para comparar los valores totales de las bajadas y las subidas. Podría decir: "Bueno, aquí están las bicicletas. Si tuviera que sacar conclusiones, aquí están las que son buenas en ambas". En resumen, ahora estoy listo para trabajar con esto, y se trata como datos con un valor que indica su calidad. Dicho esto, volvamos a Landon.
Bien. Gracias, Jed. Tengo la misma tabla que Jed creó, así que podemos ver que tenemos la bicicleta y nuestra percepción general, tanto positiva como negativa, para cada categoría de ascenso, descenso y conclusión. Ya está. Además, revisamos todas las imágenes y generamos esta tabla de curvas.
Ahora mismo, esta tabla muestra cada bicicleta. Tenemos la propiedad. Tenemos la función anti-squat. Si la reviso, pueden ver la función anti-rise y la ruta trasera, y todas nuestras diferentes propiedades. Luego tenemos... Nuestra X indica la distancia recorrida por la bicicleta, y nuestra Y es el valor de esa propiedad en ese punto del recorrido.
Nos dimos cuenta de que hay mucha variación en estas bicicletas. Algunas tienen 100 milímetros de recorrido, o la rueda puede moverse 100 milímetros, y otras tienen 180 milímetros. Esto nos causaba problemas, así que normalizamos todos nuestros recorridos de cero a uno. Así, en lugar de fijarnos en la distancia recorrida por la rueda, nos fijamos en la proporción del recorrido de la bicicleta. ¿Ha recorrido el 50 % de su recorrido completo o el mínimo?
Ahora, para ver esto en el Explorador de Datos Funcionales, nos gustaría darle un formato ligeramente diferente. Lo que haremos es convertir el valor de nuestro viaje en un valor ordinal, y luego podremos acceder a nuestra función de tabulación. Jed y yo usamos mucho la tabulación en este proyecto. Podemos tomar la bicicleta y luego indicar dónde añadimos nuestro viaje, y podemos tomar la propiedad, y luego obtener: "¿Cuál es el valor Y aquí?"
Lo convertimos en una tabla de datos, y se ve un poco desordenado, ya que la ubicación del recorrido de cada uno de nuestros valores no está necesariamente alineada. Por lo tanto, tenemos varios valores faltantes. Tengo un valor para el retroceso del pedal, pero no para nada más. Luego tengo un valor para la relación de apalancamiento, pero no para nada más. Resulta que no se ve muy bien, pero en realidad no causa ningún problema. Al introducir esto en el Explorador de Datos Funcionales, gestionará esos valores faltantes muy bien. No nos causará ningún problema. Así que estamos bien con ello.
Otra cosa que podemos hacer es unirnos a esta tabla. Necesitamos unirla a la tabla que contiene todas las puntuaciones de las reseñas de nuestras bicicletas. La forma más fácil de hacerlo es mediante una unión virtual. Puedes venir aquí, llamar al ID del enlace y luego crear una referencia de enlace para que el sistema esté limpio. Voy a abrirlo.
Como pueden ver, aquí están todos los datos de nuestras curvas. Tenemos la bicicleta, su recorrido, sus valores promedio de anti-rise, anti-squat, relación de apalancamiento, retroceso del pedal y recorrido trasero. También tenemos aquí todas nuestras puntuaciones de sentimiento.
Ahora, queremos llevar esto al Explorador de Datos Funcionales y empezar a determinar cómo se relacionan estos sentimientos con la forma de las curvas. Si accedemos al Explorador de Datos Funcionales de Modelado Especializado, analizaremos solo uno de ellos. Observaremos nuestra trayectoria trasera. La entrada X será nuestro recorrido normalizado, y luego tomaremos el nombre de nuestra bicicleta como ID. La clave está en tomar todas nuestras puntuaciones de sentimiento y añadirlas a nuestro campo suplementario.
Al ejecutar el Explorador de Datos Funcionales, estas curvas se ven muy bien porque son muy suaves y se generan a partir de vínculos, por lo que las B-Splines se ajustan a la perfección. Podemos ajustar las B-Splines a todas ellas y observamos que la mayor parte de la variación se encuentra en la función de forma uno. Si observamos nuestro gráfico de diagnóstico, vemos que hay mucha variación en el componente uno. No hay mucha variación en el componente dos. Al pasar el cursor sobre esta curva, vemos: "Esta bicicleta tiene un eje que avanza mucho. Y en el otro extremo, el eje retrocede mucho". Esos son nuestros dos extremos.
Una vez hecho esto, podemos acceder a nuestra B-Spline con datos adicionales. Gracias a la incorporación de esos Z factores adicionales, podemos realizar este análisis funcional de DOE. Esto nos permite establecer la relación entre las puntuaciones de sentimiento y la forma de la trayectoria trasera. Esto es un poco difícil de interpretar debido a la longitud de estos términos. Pero estos tres primeros representan nuestro sentimiento general de ascenso, nuestro sentimiento positivo y nuestro sentimiento negativo de ascenso.
Si solo nos interesan las subidas y queremos una buena percepción general de las subidas, y una percepción negativa muy buena o muy baja, así es como se ve nuestra bicicleta, o así es como se ve nuestra trayectoria trasera. Puedes ver que esta es una trayectoria trasera bastante estándar. No avanza mucho ni retrocede mucho. Así que puedes hacerte una idea de la trayectoria trasera. Podemos repetir este proceso para cada una de nuestras trayectorias. Eso es lo que hemos hecho, y hemos guardado estas fórmulas de predicción.
Luego, lo último que hicimos fue tomar todo eso, combinarlo y crear un generador de perfiles que nos mostrará, dadas todas nuestras revisiones y todas nuestras curvas que hemos reunido, ¿cómo se vinculan las revisiones y las curvas?
Aquí está nuestra sección de conclusiones: positiva, negativa y general. Luego, tenemos puntuaciones positivas, negativas y generales en subidas, y puntuaciones positivas, negativas y generales en bajadas. Veamos: "Bueno, queremos una bicicleta que se destaque en las bajadas". En general, en bajadas, no queremos muchos resultados negativos, sino muy positivos.
¿Qué hace eso? Si comparamos este camino trasero con los que vimos antes, este se curva mucho más hacia atrás. Tiene sentido. Es algo que corresponde a una bicicleta donde la rueda trasera se mueve hacia atrás y se aparta al chocar con algo en el sendero. Al bajar y chocar con una roca, la rueda trasera se aparta.
El otro aspecto que quiero destacar es la relación de apalancamiento. Ya lo mencioné antes. En las bicicletas de montaña existen diferentes tipos de amortiguadores: de muelles y de suspensión neumática. Sin entrar en detalles, esta es la relación de apalancamiento que se esperaría encontrar en un amortiguador de muelles. Si observamos todas las bicicletas de descenso, todas tienen amortiguadores de muelles. La tendencia actual en la industria es instalar amortiguadores de muelles en las bicicletas de descenso, ya que ofrecen un excelente rendimiento, y nuestros datos también lo demuestran.
También podemos considerar la situación inversa. Ahora no nos importan tanto los descensos, pero queremos subir muy bien. Queremos enviar una bicicleta a la Copa del Mundo. Nuestra trayectoria trasera ahora es un poco diferente, y nuestro sistema anti-rise también. Nuestra relación de apalancamiento es mucho más común en una suspensión neumática, que es la que se ve en una bicicleta enfocada en subidas, porque será mucho más ligera. Tendrá un rendimiento mucho mejor en esa categoría de ciclismo.
La idea es que, de nuevo, no intentamos mostrar: "Así es exactamente como se debe diseñar una bicicleta", sino: "Tenemos datos muy complejos". Tenemos reseñas de usuarios en un sitio web. Tenemos curvas en forma de gráficos, y con JMP podemos integrar todo esto y sintetizarlo en un panel que nos ayuda a comprender: "Así es como se relacionan las reseñas y estos ratios de apalancamiento". Esta información nos ayuda a comprender mejor y ser más rigurosos que simplemente pensar: "Creo que debería ser así".
Eso es lo que teníamos para compartir. Si tienen alguna pregunta, no duden en contactarnos. Gracias por su tiempo.