<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola,
Tengo un conjunto de datos donde:
x = hora
y = uso promedio de agua de los árboles [de 3, 2 o 1 valores debido a la pérdida de datos]
Este ciclo se repite durante meses a la vez [24 horas por día], y cada día "y" tiene un patrón diferente. Aquí hay una muestra de datos de tres días:

Sumar horas es una manera fácil de hacerlo, pero se supone que el uso de agua fue el mismo durante toda la hora [suposición incorrecta].
¿Hay alguna forma mejor de integrar el área debajo de cada curva para que la resolución de "y" no sea de una hora?
Ya intenté ajustar varios modelos no lineales de la Biblioteca de modelos, pero ninguno arroja resultados favorables y no puedo adaptarlos a los cambios diarios en la forma de la curva de "y".
A continuación voy a probar un Proceso Gaussiano para ver si consigo aumentar la resolución.
Gracias,
-JGL
Aquí hay una función que le dará una nueva columna de área.No es lo suficientemente inteligente en este momento para poder ejecutarse mientras tiene informes abiertos, así que asegúrese de que la ventana se pueda ordenar.
Todo lo que necesita hacer es ejecutar la función y luego llamar a riemann_sum()
suma_riemann = Función (
{dt = Tabla de datos actual (), x col = "Elegir" , y col = "Elegir" , bycol = "Elegir" },
{LOCALES PREDETERMINADOS},
Tabla de datos actual (dt);
Si ( xcol == "Elegir" ,
nc = columna N (dt);
lbancho = 130 ;
ahora = Nueva ventana ( "Suma de Reimann" ,
<< Modal ,
cuadro de borde ( Izquierda ( 3 ), arriba( 2 ),
Cuadro de lista V (
Caja de texto ( "Obtiene el área bajo una curva" ),
Cuadro de lista H (
Cuadro de lista V (
caja de paneles ( "Seleccionar columnas" ,
colListData = Cuadro de lista de columnas ( Todo, ancho( lbAncho ), nLineas( mínimo ( nc, 10 ) ) )
),
),
caja de paneles ( "Convertir columnas seleccionadas en roles" ,
Cuadro de alineación ( columna N ( 2 ), Espaciado( 3 ),
Caja de botones ( "Y, Columnas" , colLista << Adjuntar ( colListData << ObtenerSeleccionado ) ),
colListY = Cuadro de lista de columnas (
ancho(lbAncho),
nLineas( 1 ),
maxseleccionado( 1 ),
minItems( 1 ),
"numérico"
),
Caja de botones ( "X" , colListX << Adjuntar ( colListData << ObtenerSeleccionado ) ),
colListX = Cuadro de lista de columnas (
ancho(lbAncho),
nLineas( 1 ),
maxseleccionado( 1 ),
minItems( 1 ),
"numérico"
),
Caja de botones ( "Por" , colListB << Adjuntar ( colListData << ObtenerSeleccionado ) ),
colListB = Cuadro de lista de columnas ( ancho( lbAncho ), nLineas( 1 ), maxseleccionado( 1 ) )
)
),
caja de paneles ( "Acción" ,
Cuadro de alineación ( columna N ( 1 ),
Caja de botones ( "DE ACUERDO" ,
ycol = Columna ((colListY << Obtener artículos )[ 1 ]);
xcol = Columna ((colListX << Obtener artículos )[ 1 ]);
n por = artículos (colListB << Obtener artículos );
si (nby,
bycol = Columna ((colListB << Obtener artículos )[ 1 ]),
bycol = Nueva columna ( "Falso" , Fórmula( carbonizarse ( 1 )));
);
),
Caja de botones ( "Cancelar" , ahora << Cerrar ventana ),
Caja de texto ( " " ),
Caja de botones ( "Eliminar" ,
COLLISTA << Eliminar selección ;
colListX << Eliminar selección ;
colListB << Eliminar selección ;
),
)
)
)
)
)
);
);
Resumir ( lista_por = Por( bycol ) );
dt << Clasificar ( // ordena para asegurarse de que las x estén en orden
Por( bycol, xcol ),
Orden (Ascendente, Ascendente),
Reemplazar tabla
);
lista_valoresx = xcol << obtener valores ;
list_valuesy = ycol << obtener valores ;
Esperar ( 0.1 );
a = matriz asociativa ();
Para ( yo = 1 , yo <= N artículos ( lista_por ), i++,
dt << borrar seleccionar ;
list_rows = dt << obtener filas donde ( bycol[ Fila ()] == lista_por );
//dif_x y sum_y es donde sucede la magia
dif_x = lista_valoresx[lista_filas[ 2 :: ( Fila N ( list_rows ))]] - list_valuesx[list_rows[ 1 :: (
Fila N (lista_filas) - 1 )]];
suma_y = .5 * (list_valuesy[list_rows[ 2 :: ( Fila N ( list_rows ))]] + list_valuesy[list_rows[ 1 :: (
Fila N (lista_filas) - 1 )]]);
aa[listar_por ] = Suma ( dif_x
suma_y);
);
dt << Nueva columna ( "Integral" , numérica, continua, fórmula( aa[bycol[ Fila ()]] ) );
Columna ( dt, "Integral" ) << eliminar fórmula ; // lo hace y luego lo mata para que aa pueda permanecer local
si (!nby, dt<< Eliminar columnas ({bicol}));
);