Esta es la tercera de una serie de publicaciones sobre cómo ajustar funciones continuas por partes a conjuntos de datos. Comenzaré cada publicación con enlaces a todas las demás publicaciones de la serie. Son:
En la parte 3 ...
Introducción
Si ha seguido mis publicaciones anteriores en esta serie, sabrá que ahora hemos desarrollado ecuaciones que contienen 10 parámetros desconocidos que deben determinarse para adaptarse mejor a las piezas del problema de ejemplo. ¿Cómo hacemos esto en JMP ?
Primero, necesitamos usar el Editor de fórmulas de JMP para ingresar nuestras ecuaciones y parámetros desconocidos. Asumiré que el lector generalmente está familiarizado con el Editor de fórmulas. (Si no, aquí hay un video corto sobre la creación de fórmulas y un video más largo con mucho más detalle en el Editor de fórmulas .)
Configuración de parámetros en el editor de fórmulas de JMP
Lo que quizás no conozca es la capacidad del Editor de fórmulas para configurar parámetros. Los parámetros son variables locales de la fórmula que está creando. Se accede a ellos a través de los menús desplegables (el valor predeterminado es Variables de tabla, cambie a Parámetros como se muestra en la Figura 1).
Figura 1: Acceso a los parámetros en el editor de fórmulas
Esto abre una opción para agregar un "Nuevo parámetro" a la fórmula. Hagamos un ejemplo simple y agreguemos un parámetro llamado "a0" a la lista de parámetros. Haga clic en Nuevo parámetro, luego cambie el nombre del parámetro a "a0" y asígnele un valor de 1:
Figura 2: Creando un nuevo parámetro y dándole un valor inicial
- "Nombre" es arbitrario. Puede elegir cualquier nombre de variable JSL válido.
- "Valor" es el valor inicial de este parámetro. Debes dar un valor inicial. A veces (dependiendo de la fórmula que haya elegido), el valor inicial puede ser importante y debe seleccionarse para estar cerca del valor real, como puede adivinar. (Esto ayuda a prevenir problemas de convergencia más adelante). En este caso, no tengo idea de cuál debería ser el valor, por lo que elegiré arbitrariamente un valor inicial de 1.
Ahora podemos usar este nuevo parámetro "a0" en una fórmula, como si fuera una variable de columna. Simplemente agreguemoslo a los valores en la columna etiquetada "y". Haga doble clic en a0 en la lista de parámetros (debería aparecer en el panel Fórmula), luego escriba "+" y luego haga doble clic en "y" en la lista de columnas. Esto debería dar la siguiente fórmula:
Figura 3: Usar un parámetro en una fórmula
Ahora, cuando hacemos clic en Aceptar y miramos el resultado en la tabla de datos, tenemos
Figura 4: Resultados de usar un parámetro en una fórmula
Entonces, la fórmula ahora reconoce el valor actual del parámetro a0 y lo aplica en consecuencia. Este importante concepto se utilizará en la próxima publicación del blog cuando usemos la plataforma no lineal JMP para resolver los parámetros desconocidos.
Introducción de parámetros para las funciones por partes
En la Parte 2 de esta serie de blogs, desarrollamos los cinco polinomios simples para aplicar entre puntos de interrupción en la serie de datos de ejemplo. Estos polinomios tenían seis parámetros desconocidos: a0, b1, b2, c1, d1 y d2. También teníamos cuatro puntos de corte que definían las regiones donde los polinomios estaban activos: X1, X2, X3 y X4. Necesitamos agregar cada uno de estos parámetros a nuestra lista de parámetros de Fórmula, junto con valores iniciales razonables. Cuando termine, la lista de parámetros se verá así:
Figura 5: Los diez parámetros ingresados e inicializados para nuestro ejemplo por partes
Tenga en cuenta que asumí valores iniciales de "1" para cada uno de los coeficientes en los polinomios. Para los puntos de interrupción X1 a X4, elegí estimar los valores en función del "ojo" donde pensé que podrían ocurrir. Esto simplemente le da a JMP un mejor lugar para comenzar a buscar los puntos de interrupción.
Introducción de fórmulas por partes, ¡incluido un truco booleano!
Ahora ya sabe cómo configurar parámetros en el Editor de fórmulas y también cómo ingresar cualquiera de las cinco ecuaciones por partes que se muestran en la Parte 2 en el Editor de fórmulas. Pero, ¿cómo ingresamos TODAS LAS CINCO ecuaciones por partes en la misma fórmula?
Una forma es utilizar una declaración IF grande, por ejemplo, "Si x @PatricioGiuliano , quien publicó un truco útil en un hilo de discusión de la comunidad de JMP anterior.
JMP reconoce operadores booleanos (And, Or, Nor, etc.). Si se utiliza un operador booleano en una fórmula, la lógica booleana devuelve un 1 si es verdadero y un 0 si es falso. Entonces podemos configurar un operador como (X1 <: x &: x <= X2). Este operador devuelve un 1 si el valor de la columna "x" (denominado ": x" en la expresión) está entre los parámetros X1 y X2, y 0 en caso contrario. Entonces, simplemente podríamos multiplicar la ecuación por partes para el segmento X1-X2 por la expresión booleana anterior. Si el valor de x está en el rango adecuado, entonces se activa la ecuación del segmento. Si no, devolvemos 0. Luego haríamos lo mismo para todos los demás rangos y sumaríamos todas las ecuaciones.
Si hacemos todo eso, terminamos con una fórmula que se ve así:
Figura 6: Fórmula completa por partes (que se muestra en el modo Editor de fórmulas)
Y a continuación se muestra la misma información en formato de entrada JSL, si lo prefiere:
Figura 7: Fórmula completa por partes (mostrada en modo JSL)
Entonces, para resumir, en las Figuras 6 y 7, esencialmente hemos construido una fórmula en una nueva columna (llamada ypred) que:
- Define 10 parámetros desconocidos (y dado a cada parámetro un valor inicial apropiado) que se utilizarán en la fórmula.
- Describe cuatro ecuaciones por partes, cada una con sus parámetros apropiados.
- Activa cada ecuación por partes multiplicando por una desigualdad booleana apropiada que describe los rangos de cada ecuación.
- Suma las cuatro ecuaciones para dar la fórmula final.
Muy genial...
Siguiente en la serie
La próxima vez, finalmente usaremos las ecuaciones con la plataforma no lineal para encontrar los mejores parámetros de ajuste. También discutiremos las opciones para los criterios y algoritmos de convergencia.
Hola @JerryFish , ¡Realmente he disfrutado estas publicaciones de blog hasta ahora!Para alguien que no realiza la optimización de parámetros todos los días, es excelente tener este recurso para recordar cómo hacerlo y cómo manejar casos más avanzados como el ajuste no lineal por partes que se trata aquí.
Pregunta rápida asociada con esta publicación: si quisiera generar datos simulados que produjeran una tendencia gradualmente creciente (o decreciente) a lo largo del "tiempo" (podemos usar el orden de las filas para simplificar), ¿cómo podría parametrizar esto en JMP? (¿O hay una manera más fácil sin usar la parametrización del modelo, por ejemplo, con una combinación de fórmulas de columna instantánea?).
¡Gracias!@patrickgiuliano