¿Cómo puedo realizar una regresión de mínimos cuadrados estándar en valores específicos de mi eje x?
Para obtener más contexto, trazo el voltaje contra la corriente y en valores -10A -5A 5A 10A. Necesito un modelo de regresión mínima estándar de tantos puntos alrededor de estos valores. Me imagino que mis datos tienen 4 puntos o 4 líneas pequeñas para representar esto.
Tengo JMP 17 pro y actualmente lo hago para todo el conjunto de datos, sin embargo, esto no es lo que necesito.
Se prefiere un método para hacer esto a través del análisis JMP al script, pero cualquier cosa sería genial 
Hola @MedianaRooster10 ,
¿Puede compartir una tabla de datos de muestra para que podamos ver cómo están estructurados los datos? Esto podría ayudar a llegar a una solución más rápidamente.
Una idea que me vino a la mente es tener una columna categorizada los diferentes grupos actuales como un tipo de datos nominal. Es posible que tenga valores numéricos para la columna: actual, como -10, -5, 5, 10, pero podría tener una columna con texto como -10A -5A 5A 10A, para cada agrupación de corriente y luego, cuando realiza su regresión LS estándar, usa esta columna como la variable "BY".
Sería como usar el archivo Big Class.jmp y modelar :height como Y, :weight como X y luego :sex como la variable "BY". Esto le proporcionaría un modelo para todas las Y agrupadas en esos diferentes rangos de voltaje. Puede que esto no sea lo que busca, pero nuevamente, sería útil obtener una tabla de datos de ejemplo para ver cómo están estructurados sus datos y proporcionar una solución más específica.
¡Espero que esto ayude!,
DS
Hola @SDF1
No creo que eso sea lo que busco.
Adjunté un subconjunto de datos para 1 temperatura y el gráfico que produzco.
No es un gráfico lineal, sin embargo, quiero una regresión lineal parcial. Por ejemplo, quiero tomar los 10 puntos de datos más cercanos a 5A y calcular el mínimo cuadrado de esto (traza esto como un punto de datos en mi gráfico).
¡Gracias por su ayuda!
Hola @MedianaRooster10 ,
Creo que estás intentando hacer una regresión por partes. Es posible que pueda hacerlo con Functional Data Explorer o con la plataforma Nonlinear.
Este blog de JMP podría ayudarle a realizar este tipo de regresión en un caso de uso muy similar: Ajuste de funciones por partes con la plataforma no lineal de JMP
Espero que esto te ayudará,
Hola @MedianaRooster10 ,
Gracias por la tabla de datos, eso ayuda a entender un poco mejor las cosas.
Si no necesita hacer un ajuste de mínimos cuadrados para todos sus datos, sino solo un segmento determinado o varios segmentos, sigo pensando que usar algún tipo de columna de identificación es el camino a seguir y usarlo en el modelo como una variable BY o como un filtro de datos local. También supongo que es posible que tengas que hacer esto para muchas tablas o columnas de datos, lo que significa que las secuencias de comandos en realidad serían una muy buena manera de hacerlo.
Si desea hacerlo con un poco de script y el resto interactuando con JMP, a continuación encontrará un pequeño código que ordenará su tabla de datos, creará una nueva tabla de datos, generará una columna llamada :Segment y luego asignará un valor al segmento de elección. En el código, el objetivo es el valor actual del objetivo; elegí 10 y el rango es el número de puntos de datos a cada lado. Si luego realiza mínimos cuadrados estándar y utiliza la columna :Segment como filtro de datos local, puede seleccionar el segmento 2 y ajustar los mínimos cuadrados a los datos.
Names Default To Here( 1 );
Current Data Table() << Sort( By( :"Current(A)"n ), Order( Ascending ), Output Table( "Sorted.jmp" ) );
dt = Data Table("Sorted");
dt << New Column( "Segment", "Continuous", "Ordinal" );
range = 5; //rows to group on either side of target
target = 10; //5A
rows = Current Data Table() << Get Rows Where( (:"Current(A)"n >= target - 0.3 & :"Current(A)"n <= target + 0.3) );
For( i = 1, i <= N Rows(dt), i++,
If(
i < rows - range, :Segment[i] = 1,
(i >= rows - range & i <= rows + range), :Segment[i] = 2,
i > rows + range, :Segment[i] = 3
)
);Obtienes un resultado que se parece a este.

Si utiliza la columna Segmento como variable BY en el ajuste del modelo SLS, cuando obtenga su modelo de datos, puede mantener presionada la tecla CTRL y hacer clic con el botón izquierdo en el botón rojo cerca de uno de los nombres de "Voltaje de respuesta" y seleccione Guardar columnas > Fórmula de predicción y esto guardará una columna de fórmula de predicción en la tabla de datos donde se utiliza una ecuación diferente, según el número de segmento.



Esa es sin duda una forma de hacerlo.
Otra forma de hacerlo es haciendo un gráfico de voltaje versus corriente en el generador de gráficos y luego usando la herramienta Lazo (al lado de la lupa, debajo de los menús) para seleccionar los datos que desea ajustar.

Luego vaya Filas > Selección de fila > Invertir selección de fila.

Luego haga clic derecho en uno de los números de fila y seleccione Ocultar y excluir. Luego, cuando vaya a la plataforma Modelo para sus mínimos cuadrados estándar, podrá modelar solo aquellos puntos de datos que no están ocultos ni excluidos.
En el siguiente ejemplo, puede ver el modelo y el SLS ajustado a los datos. Desde el gráfico residual por predicción, se puede ver cierta curvatura, por lo que agregué un término actual*actual y se obtiene un ajuste mucho mejor con residuos ligeramente más aleatorios.


Si conoce la forma funcional de la fórmula para las diferentes secciones de sus datos, entonces lo haría de la manera que Victor mencionó usando la plataforma no lineal. Pero es necesario conocer la forma funcional de cada pieza y saber dónde "dividir" los datos.
Entre esto y lo que publicó Víctor, deberías tener suficiente para empezar.
¡Espero que esto ayude!,
DS