<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Bonjour,
J'ai un ensemble de données où:
x = heure
y = consommation moyenne d'eau des arbres [sur 3, 2 ou 1 valeurs dues à la perte de données]
Ce cycle se répète pendant des mois à la fois [24 heures par jour], et chaque jour "y" a un schéma différent. Voici un exemple de données sur trois jours :

Additionner les heures est un moyen facile de le faire, mais suppose que la consommation d'eau a été la même pendant toute l'heure [hypothèse erronée].
Existe-t-il un meilleur moyen d'intégrer l'aire sous chaque courbe afin que la résolution de "y" ne soit pas d'une heure ?
J'ai déjà essayé d'ajuster divers modèles non linéaires de la bibliothèque de modèles, mais aucun ne donne de résultats favorables et ne peut pas les adapter aux changements quotidiens de la forme de la courbe de "y".
Ensuite, je vais essayer un processus gaussien pour voir si je peux augmenter la résolution.
Merci,
-JGL
Voici une fonction qui vous donnera une nouvelle colonne de surface.Ce n'est pas assez intelligent pour le moment pour pouvoir s'exécuter pendant que vous avez des rapports ouverts, alors assurez-vous simplement que la fenêtre peut être triée.
Tout ce que vous avez à faire est d'exécuter la fonction puis d'appeler riemann_sum()
somme_riemann = Fonction (
{dt = Tableau de données actuel (), xcol = "Prendre" , ycol = "Prendre" , bycol = "Prendre" },
{LOCAL PAR DÉFAUT},
Tableau de données actuel ( dt );
Si ( xcol == "Prendre" ,
nc = Col N ( dt );
lblargeur = 130 ;
nw = Nouvelle fenetre ( "Somme de Reimann" ,
<< Modal ,
Boîte à bordure ( Gauche ( 3 ), haut( 2 ),
Zone de liste V (
Zone de texte ( "Obtient la zone sous une courbe" ),
H Zone de liste (
Zone de liste V (
Panneau électrique ( "Sélectionner les colonnes" ,
colListData = Zone de liste Col ( Tout, largeur( lbWidth ), nLines( Min ( NC, dix ) ) )
),
),
Panneau électrique ( "Transformer les colonnes sélectionnées en rôles" ,
Boîte de programmation ( Col N ( 2 ), Espacement( 3 ),
Boîte à boutons ( "Y, Colonnes" , colListe << Ajouter ( colListeDonnées << Obtenir la sélection ) ),
listeListe = Zone de liste Col (
largeur( lbWidth ),
nLignes( 1 ),
maxselected( 1 ),
minItems( 1 ),
"numérique"
),
Boîte à boutons ( "X" , listeListeX << Ajouter ( colListeDonnées << Obtenir la sélection ) ),
listeListeX = Zone de liste Col (
largeur( lbWidth ),
nLignes( 1 ),
maxselected( 1 ),
minItems( 1 ),
"numérique"
),
Boîte à boutons ( "Par" , listeListeB << Ajouter ( colListeDonnées << Obtenir la sélection ) ),
colListeB = Zone de liste Col ( largeur( lbLargeur ), nLignes( 1 ), maxselected( 1 ) )
)
),
Panneau électrique ( "Action" ,
Boîte de programmation ( Col N ( 1 ),
Boîte à boutons ( "D'ACCORD" ,
ycol = Colonne ((colListe << Obtenir des articles )[ 1 ]);
xcol = Colonne ((colListeX << Obtenir des articles )[ 1 ]);
nby = articles (colListeB << Obtenir des articles );
si (npar,
bycol = Colonne ((colListeB << Obtenir des articles )[ 1 ]),
bycol = Nouvelle colonne ( "Fakeby" , Formule( carboniser ( 1 )));
);
),
Boîte à boutons ( "Annuler" , nw << Fermer la fenêtre ),
Zone de texte ( " " ),
Boîte à boutons ( "Retirer" ,
COLLISTE << Enlever la sélection ;
listeListeX << Enlever la sélection ;
colListeB << Enlever la sélection ;
),
)
)
)
)
)
);
);
Résumer ( list_by = By( bycol ) );
dt << Trier ( // trie pour s'assurer que les x sont dans l'ordre
Par( bycol, xcol ),
Ordre (Croissant, Croissant),
Remplacer le tableau
);
list_valuesx = xcol << obtenir des valeurs ;
list_valuesy = ycol << obtenir des valeurs ;
Attendez ( 0,1 );
aa = Tableau associatif ();
Pour ( je = 1 , je <= N articles ( list_by ), i++,
dt << effacer sélectionner ;
list_rows = dt << obtenir des lignes où ( parcol[ Ligne ()] == list_by );
//dif_x et sum_y sont là où la magie opère
dif_x = list_valuesx[list_rows[ 2 :: ( N rangée ( list_rows ))]] - list_valuesx[list_rows[ 1 :: (
N rangée ( list_rows ) - 1 )]] ;
somme_y = .5 * (list_valuesy[list_rows[ 2 :: ( N rangée ( list_rows ))]] + list_valuesy[list_rows[ 1 :: (
N rangée ( list_rows ) - 1 )]]);
aa[list_by ] = Somme ( dif_x
somme_y );
);
dt << Nouvelle colonne ( "Intégral" , numérique, continue, formule( aa[bycol[ Ligne ()]] ) );
Colonne (dt, "Intégral" ) << supprimer la formule ; // le fabrique puis le tue pour que aa puisse rester local
si (!nby, dt<< Supprimer les colonnes ({bycol}));
);