A principios de este año, mi gerente me envió una publicación muy interesante de Data Colada, una publicación de blog escrita por tres científicos del comportamiento que examina las investigaciones publicadas. Los autores de Data Colada trabajaron con un equipo de investigadores anónimos y encontraron algunas anomalías curiosas en un conjunto de datos sobre el kilometraje de un automóvil que se utilizó en un artículo de 2012. Soy responsable de probar la plataforma Explore Patterns en JMP , que puede usarse para identificar patrones inusuales o inesperados en los datos. En esta publicación, utilizo Explorar patrones, junto con otras herramientas útiles en JMP, para buscar patrones inesperados o inusuales en los datos de kilometraje del automóvil.
Fondo
Las primeras filas y columnas del conjunto de datos de kilometraje del automóvil se muestran a continuación. Estos datos se obtuvieron de un estudio en el que se pidió a 13.488 clientes de una agencia de seguros de automóviles en particular que informaran sus lecturas actuales del odómetro. Las lecturas informadas por los clientes se incluyen en los datos como columnas update_car1 a update_car4, ya que cada cliente informó información de hasta cuatro automóviles. Los datos también contienen las lecturas del odómetro de cada vehículo cuando se emitieron las pólizas de seguro por primera vez. Estas columnas se denominan baseline_car1 a baseline_car4. Dado que no todas las políticas se emitieron al mismo tiempo, el tiempo transcurrido desde la línea de base hasta la actualización varía para las observaciones de este estudio.

En la publicación de Data Colada, los investigadores presentaron cuatro anomalías que se encontraron en este conjunto de datos. Profundicemos en cada uno de estos hallazgos utilizando JMP.
Anomalía #1: La distribución de las millas recorridas es uniforme
Los autores de Data Colada descubrieron que la distribución de millas recorridas era consistente con una distribución uniforme que oscilaba entre 0 y 50 000 millas.
Dado que los datos incluyen una línea de base y una columna de actualización para las lecturas del odómetro de cada automóvil, creamos columnas de fórmula para almacenar las millas recorridas restando los valores de referencia de los valores actualizados. Luego, en JMP, utilizamos la plataforma de Distribución para ver la distribución de los valores de referencia y actualizados, así como el total de millas recorridas por cada automóvil. Considere el informe de Distribución del primer automóvil de cada cliente.

La forma de la distribución del kilometraje inicial es similar a la distribución del kilometraje actualizado, con la lectura mediana del odómetro aproximadamente 26,000 millas más alta en el momento de la actualización. Este hallazgo no es sorprendente en sí mismo. Lo que encuentro más interesante acerca de las lecturas de referencia y actualizadas es que dos participantes poseían vehículos que habían recorrido casi 1 millón de millas. Deben tener muy buena mecánica.
La parte más alarmante del informe es la tercera Distribución anterior, que muestra la diferencia entre las dos primeras. La distribución de millas recorridas entre los tiempos de referencia y de actualización parece estar distribuida uniformemente entre 0 y 50 000 millas. No hay valores superiores a 50 000 millas y cada grupo del histograma contiene aproximadamente el mismo número de participantes. La inspección visual proporciona evidencia sólida en este caso de que los datos están distribuidos uniformemente. Sin embargo, para datos que no son tan obvios, puede realizar una prueba de bondad de ajuste utilizando la opción Fit Beta en la plataforma de distribución .
La siguiente captura de pantalla muestra la distribución de millas recorridas (actualización – línea base) para cada uno de los autos de los participantes. Encontramos que cada distribución aparece distribuida uniformemente entre 0 y 50 000 también para el segundo, tercer y cuarto automóvil. Con base en este patrón de distribución, podemos concluir que los valores de kilometraje actualizados podrían haberse generado agregando valores aleatorios distribuidos uniformemente a los valores de kilometraje de referencia.

Anomalía n.º 2: el kilometraje inicial se redondeó y los kilometrajes actualizados no
Los autores de Data Colada descubrieron que el kilometraje de referencia tenía muchos valores redondeados al millar más cercano, mientras que el kilometraje actualizado no contenía este redondeo.
Los investigadores de Data Colada investigaron el redondeo observando los últimos tres dígitos del kilometraje. Podríamos usar JSL para adoptar un enfoque similar, ¡pero en su lugar usemos Explorar patrones! Si nunca antes ha utilizado Explorar patrones, puede encontrarlo seleccionando Analizar > Detección.

Después de iniciar Explorar patrones para explorar cada línea base y columna de actualización, obtenemos el resultado que se ve en la siguiente captura de pantalla. En el informe Patrones univariados, seleccione la línea base y actualice los valores del primer automóvil para comparar los patrones.

De forma predeterminada, Explorar patrones incluye los informes de los valores más duplicados en cada columna, las ejecuciones más largas en cada columna y las secuencias duplicadas más largas en cada columna. Para el primer coche propiedad de los participantes, no hay mucho que ganar con los informes de Carreras más largas o Secuencias duplicadas más largas. Sin embargo, el informe Valores más duplicados muestra un contraste interesante. En los kilometrajes de referencia del primer automóvil que se posee, hay muchos valores que parecen estar redondeados a la decena de mil más cercana. Este no es necesariamente un patrón inesperado de encontrar; Cuando me preguntan el kilometraje de mi vehículo, siempre doy la vuelta al contestar.
El informe de valores más duplicados para los kilometrajes actualizados es bastante diferente. En este informe, hay muchos menos duplicados y los duplicados que aparecen no están redondeados como los valores de referencia. Esto es lo que sucedería si las columnas de actualización se generaran agregando valores aleatorios distribuidos uniformemente a los valores de referencia. Por lo tanto, este hallazgo es consistente con la anomalía n.° 1.
Anomalía n.º 3: los datos se ingresaron en dos fuentes y cada observación tiene un 'gemelo' en la otra fuente
Los investigadores notaron que en el archivo de datos original, las observaciones se registraron utilizando dos fuentes diferentes. Mediante una clasificación inteligente, los investigadores descubrieron que cada observación de referencia en una fuente correspondía a una fila muy similar en la otra fuente.
Aplaudo a los investigadores por darse cuenta de las diferentes fuentes y adoptar este enfoque. Sin embargo, supongamos que todos los datos estuvieran en la misma fuente y no se activara esta señal de alerta. ¿Podemos usar JMP para identificar relaciones curiosas entre filas y columnas? Por supuesto que podemos; después de todo, este es el Blog de JMP.
Podemos utilizar Explorar patrones para investigar si existen relaciones lineales entre columnas de filas contiguas. Considere el siguiente ejemplo sencillo. En las primeras cuatro filas, las columnas tienen una relación lineal exacta donde Y=2*X. En las siguientes tres filas, las dos columnas nuevamente tienen una relación lineal exacta donde Y=0,5*X.

Podemos usar Explorar patrones para buscar relaciones lineales como esta entre las columnas de la línea base. Si aún no hubiéramos notado la anomalía n.° 1, también tendría sentido buscar relaciones lineales en las columnas actualizadas.

Si había muchas relaciones lineales exactas, o quizás grandes series de relaciones lineales, puede ser una señal de que los valores de una columna se generaron utilizando un múltiplo de otra columna. Aquí, sólo hay unas pocas filas para las cuales las columnas de referencia tienen una relación lineal exacta. Podríamos usar la opción Colorear para ver estas celdas e inspeccionar si hay irregularidades, pero para un conjunto de datos de este tamaño con muchos valores redondeados, no es sorprendente encontrar algunas relaciones lineales.
Utilizando Explorar patrones, investigamos si existen relaciones lineales sospechosas entre filas de dos columnas para los valores de referencia. Sin embargo, los resultados no fueron muy útiles. Ahora, busquemos también relaciones lineales entre columnas entre dos filas, nuevamente para los valores de referencia. Para hacer esto, necesitaremos usar Explorar patrones en la transposición de nuestros datos.
Utilicé la opción Transponer en JMP para transponer los datos según las columnas de referencia, para los participantes que informaron el kilometraje de al menos tres vehículos. Excluí las filas en las que los participantes tenían dos o menos automóviles, ya que no ayudarían a identificar relaciones lineales.

En el informe Explorar patrones para estos datos transpuestos, hay muchas relaciones lineales exactas donde la pendiente es aproximadamente uno. Por lo tanto, hay muchas filas en la tabla de datos original que tienen una fila casi gemela de valores de referencia en todos los autos. (Sugerencia: puede hacer clic derecho en la columna Pendiente y usar la función Seleccionar dónde para resaltar todas las filas donde la pendiente está cerca de uno. Hay 69 pares donde la pendiente está entre 0,99 y 1,01).

Puede seleccionar Colorear encima de la tabla de relaciones lineales para colorear todos los valores en una relación lineal exacta, o puede hacer clic con el botón derecho en la columna Y para colorear valores específicos. La siguiente tabla contiene los valores coloreados para las primeras tres filas del informe Relaciones lineales.

Explore Patterns ha identificado varios pares de 'gemelos conductores' donde los valores de kilometraje de referencia eran muy similares en todos los automóviles, teniendo una relación lineal exacta. Podríamos continuar con esto buscando más pares que no tengan una relación lineal exacta pero que aún estén muy relacionados. Como se ilustra en la publicación de Data Colada, una vez que ordena por el valor de referencia para el cuarto automóvil, es fácil identificar muchos conductores gemelos.
Anomalía n.º 4: una fuente tiene muchos valores de referencia redondeados y la otra no.
Los investigadores descubrieron que los valores de referencia en la fuente Calibri estaban redondeados y los valores en la fuente Cambria no estaban redondeados.
Ahora, supongamos que sabemos que algunas filas están escritas en una fuente y las otras filas en una segunda fuente, y que tenemos una columna en nuestros datos con la fuente para cada fila. Podemos usar Explorar patrones con el nombre de la fuente como columna Por.

Como se ve en los informes de Explorar patrones, los valores de kilometraje de referencia para las filas en fuente Calibri tienen muchos valores redondeados, mientras que los valores de referencia para las filas de Cambria no están redondeados. Dado que esperaríamos que los kilometrajes reportados por el cliente se redondearan, esto sugiere que los valores reportados originales eran las filas con la fuente Calibri y que los datos del "gemelo conductor" se crearon y luego se ingresaron en la fuente Cambria.
Conclusión
Cada vez que adquiere un nuevo conjunto de datos, es probable que realice algún análisis exploratorio y limpieza de datos. Quizás busque valores atípicos , verifique los datos en busca de valores faltantes o vea la distribución de cada variable. Espero que esta publicación lo haya animado a considerar el uso de Explorar patrones para buscar patrones inusuales en sus datos. No todos los patrones que encuentre al utilizar Explorar patrones son evidencia de que algo anda mal o es preocupante, pero la utilidad le proporciona una herramienta para encontrar patrones que justifiquen una mayor investigación.
Hola @madhu . Gracias por esta pregunta, compartiré dos soluciones para que los títulos de las columnas de la tabla de datos transpuestos usen este formato.
Primero, puede crear una nueva columna en la tabla de datos original que use la fórmula que se ve en la captura de pantalla a continuación.

Una vez que haya creado esta columna, puede usarla como la columna Etiqueta al realizar la transposición.

Una segunda opción que puede usar, dado que ya ha creado la tabla de datos transpuestos, es usar JSL para editar los títulos de las columnas. Para hacer esto, abra su tabla de datos transpuestos, luego seleccione Archivo > Nuevo > Script y pegue el siguiente script en la ventana del editor de scripts. Ejecutar este script actualizará los títulos de las columnas al formato deseado.
dt = Data Table("Transpose of Car Mileage Data");
colNames = dt << Get Column Names(string);
For(i=2, i <= Length(colNames), i++,
Column(dt, i) << Set Name("id=" || char(colNames[i]))
);
Espero que esto ayude. Gracias otra vez por tus comentarios.
Hola @madhu . Puede encontrar Seleccionar dónde en Filas > Selección de filas > Seleccionar dónde.

Sin embargo, si desea usar JMP de forma interactiva para seleccionar estas filas, en lugar de usar JSL, le recomendaría agregar una nueva columna y crear una fórmula para identificar estas filas. Para hacer esto, intente los siguientes pasos.
- Seleccione Cols > New Columns... en el menú superior
- En el menú Nueva columna, seleccione Propiedades de columna > Fórmula
- En el editor de fórmulas, ingrese la fórmula como se muestra a continuación

Cuando haya ingresado la fórmula, haga clic en Aceptar para crear la columna. En la nueva columna, las filas con el valor 1 corresponden a participantes con tres o más autos. Puede seleccionar todas las filas con el valor 1 haciendo clic derecho en una fila con el valor 1 y haciendo clic en "Seleccionar celdas coincidentes" como se muestra a continuación.

Para su pregunta sobre el uso de JSL para hacer esto, un excelente lugar para comenzar es mirar el Registro mejorado para encontrar el JSL que se generó para las acciones que realizó de forma interactiva. Por ejemplo, la siguiente captura de pantalla muestra el registro después de abrir la tabla de datos adjunta a esta página, crear la nueva columna de fórmula descrita anteriormente y transponer los datos usando las filas seleccionadas. Puede guardar la secuencia de comandos del Registro en una nueva secuencia de comandos que puede ejecutar nuevamente en cualquier momento.

Espero que esto sea útil. Gracias de nuevo por leer.
Hola @madhu gracias por leer, y por la pregunta. Para identificar a los participantes que reportaron millas para al menos tres vehículos, puede usar la función Seleccionar dónde de JMP para seleccionar estas filas. Luego, al transponer los datos, puede elegir usar solo las filas seleccionadas. Aquí hay un script JSL que selecciona filas para todos los participantes con tres o más autos y luego transpone los datos usando solo las filas seleccionadas.
Data Table( "Car Mileage Data" ) << Select Where(
Sum(Is Missing(:baseline_car1),
Is Missing(:baseline_car2),
Is Missing(:baseline_car3),
Is Missing(:baseline_car4)
) <= 1);
Data Table( "Car Mileage Data" ) << Transpose(
columns( :baseline_car1, :baseline_car2, :baseline_car3, :baseline_car4 ),
Transpose selected rows only( 1 ),
Output Table( "Transpose of Car Mileage Data" )
);