regla trapezoidal?
Names default to here(1);
dt = current data table();
x_col = Column(dt, "Time (Week)");
y_col = Column(dt, "Y");
by_col = Column(dt, "Curve");
auc = function({x_col, y_col, by_col},
{DEFAULT LOCAL},
Summarize(dt, by_values=By(by_col));
areas = [=>];
for(i=1, i<=nitems(by_values), i++,
by_value = by_values[i];
rows = dt << Get Rows Where(by_col[]==by_value); // get he rows for the curve
x_values = x_col[rows];
r = rank(x_values); // make sure it's ordered right
x_values = x_values[r];
y_values = y_col[rows][r];
n = nitems(x_values);
//trapezoid rule
x_1 = x_values[1::n-1];
x_2 = x_values[2::n];
y_1 = y_values[1::n-1];
y_2 = y_values[2::n];
x_intervals = abs(x_2 - x_1);
y_avg = (y_2 + y_1)/2;
area = sum(x_intervals :*</img> y_avg);
areas[by_value] = area
);
return(areas);
);
areas = auc(x_col, y_col, by_col);
show(areas); // areas = ["A" => 10.5, "B" => -7.5, "C" => -16.5, "D" => 6, "E" => 24];
Además, lo que estás haciendo no es un polígono (en caso de que estés usando esto en otro lugar para cosas similares).El área de un polígono nunca puede ser negativa o no existiría.
El ejemplo en el índice de secuencias de comandos le muestra lo que está haciendo.
Names Default To Here( 1 );
area = Polygon Area( {0, 0}, {0, 10}, {10, 10}, {10, 0} );
Cierra el ciclo (en este caso un cuadrado) entre {10, 0} y {0, 0}.Entonces el área del polígono es 100.No importa dónde coloques eso en el plano x/y.El área de un cuadrado de 10x10 debe ser 100.
Names Default To Here( 1 );
area = Polygon Area( {-100, -100}, {-100, -90}, {-90, -90}, {-90, -100} );
show(area); //100Hola comunidad JMP,
Necesito calcular el área firmada debajo de la curva para datos de series de tiempo simples (ver datos simulados a continuación).

Específicamente, necesito calcular el área (como se muestra en los gráficos anteriores) por encima de cero como positivo y por debajo de cero como negativo, incluido el cambio local de positivo a negativo y recíprocamente.
Ejemplos:
- AUC para la curva A = Área positiva 1 + Área negativa 2 + Área positiva 3
- AUC para la curva C = Área positiva 1 + Área negativa 2
- AUC para la curva E = Área positiva 1
La función Polygon Area () no parece manejar correctamente las series temporales más complejas, probablemente debido a los segmentos que se cruzan. Además, esta función no devuelve el valor firmado para el área. ¿Conocería un complemento o una función que podría usar para lograr mi objetivo?
Gracias.
Mejor,
TS