1180_es-ES
Cálculo del área entre dos ajustes spline (bivariados)He utilizado fit spline de la plataforma bivariada para parametrizar curvas espectrales fluorométricas y he guardado la fórmula de predicción para mis muestras así como espacios en blanco. Quiero estimar el área bajo el pico, o más precisamente, el área entre las curvas de la muestra y el blanco dentro de un intervalo de longitud de onda específico.
Ciertamente podría hacer esto en Matlab con un poco de esfuerzo, pero sería bueno mantener todo el flujo de trabajo dentro de JMP. Creo que mi enfoque implicaría resumir los cortes cuya geometría está determinada por la matriz de la fórmula de predicción de spline. Sin embargo, no estoy seguro de cómo interpretar y usar la fórmula de predicción.
¿Alguna idea que pueda guiarme en la dirección correcta sobre cómo abordar este problema utilizando JMP / JSL? ¡Gracias!Re: Cálculo del área entre dos ajustes spline (bivariados)Este guión funciona, lo que hizo que se preguntara por qué el mío no lo hizo, ya que se supone que es idéntico al suyo. Cuando los comparé encontré un error tipográfico en el mío. Perdón por la confusión. ¡Y gracias por tu ayuda! Ahora tengo un script que funciona para procesar por lotes mis datos de fluorometría.
Lo único molesto que queda es el comando Maximizar () que rompe la secuencia de comandos si no puede converger, es decir, encuentra un máximo local. No he descubierto cómo interactuar con la salida de error en JSL (como "si el resultado es == error, luego cambiar la tolerancia y repetir, si no Max = resultado" o similar).
¡Gracias de nuevo!Re: Cálculo del área entre dos ajustes spline (bivariados)En JMP 8.0.2 en WinXP, usando una tabla de coeficiente de Spline generada por JMP cuando se le solicitó, el siguiente script funcionó para mí sin error:
Re: Cálculo del área entre dos ajustes spline (bivariados)Busque en este foro utilizando: Variable de fórmula de columna o algo similar para encontrar un ejemplo de cómo crear con éxito una fórmula de columna a través de secuencias de comandos que haga referencia a una columna desconocida por adelantado. Creo que eso ayudará.Re: Cálculo del área entre dos ajustes spline (bivariados)¡Gracias! Funciona perfectamente y ahora estoy tratando de hacerlo en JSL. Puedo publicar el guión aquí cuando haya terminado, si alguien está interesado.
Por cierto, hay un problema con la columna acumulativa. Si lo haces manualmente agregando la fórmula.
Si (Fila () == 1,: Área de corte,: Área acumulada [Fila () - 1] +: Área de corte [Fila ()]) a una columna "Área acumulada", funciona. Sin embargo, si lo hago mediante una secuencia de comandos con el comando << establecer fórmula (), aparece un error "Referencia ilegal (Recursión) en la fila ...". Se crea la columna pero sin la fórmula.Re: Cálculo del área entre dos ajustes spline (bivariados)Desde la 8.0.1 Stat and Graph Guide:
"El método de spline cúbico utiliza un conjunto de polinomios de tercer grado empalmados, de modo que la curva resultante es continua y suave en los empalmes (puntos de nudo). La estimación se realiza minimizando una función objetivo que es una combinación de la suma de error de cuadrados y una penalización por curvatura integrada sobre la extensión de la curva. Consulte el documento de Reinsch (1967) o el texto de Eubank (1988) para obtener una descripción de este método ".
Cuando encaja una spline en Fit Y by X, hay un menú desplegable de triángulo rojo con un elemento para guardar coeficientes. Esta acción crea una nueva tabla con las columnas X, A, B, C, D. La columna X contiene los valores únicos de X de los datos en orden ascendente. Las otras 4 columnas son los coeficientes del polinomio de tercer grado utilizado en un intervalo que comienza con el valor de X para la misma fila hasta el valor de X para la siguiente fila. Si el valor de X en la misma fila es X1, el polinomio para el intervalo es:
A + B * (X-X1) + C * (X-X1) ^ 2 + D * (X-X1) ^ 3
que se usa para X hasta X2, el siguiente "nudo". Para encontrar el área exacta bajo esta curva entre x1 y x2, simplemente integre este polinomio de X1 a X2 para obtener:
A * (X2-X1) + (B * (X2-X1) ^ 2) / 2 + (C * (X2-X1) ^ 3) / 3 + (D * (X2-X1) ^ 4) / 4
Necesitas crear una nueva columna llamada Area Slice y colocarla en esta fórmula. En la fórmula JMP, use X para X1 y Lag (X, -1) para X2. Luego tendrás una columna de Area Slices. Luego, puede agregar todos los cortes de área para obtener el área total debajo de la curva de principio a fin. También puede hacer una columna de áreas acumulativas si lo desea.
Esto le da un valor exacto, no una aproximación, para el área debajo de la spline.
Probablemente esto puede ser escrito, pero no lo he intentado.
Para obtener el área entre 2 curvas de este tipo, simplemente encuentre el área de esta manera y reste una de la otra.
Miguel