<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />你好,
我有一个数据集,其中:
x = 小时
y = 平均树木用水量 [由于数据丢失导致 3、2 或 1 个值]
这个循环在当时 [每天 24 小时] 重复几个月,并且每天“y”都有不同的模式。 这是三天的示例数据:

将小时数相加是一种简单的方法,但假设整个小时内的用水量相同 [错误假设]。
有没有更好的方法来整合每条曲线下的面积,使“y”的分辨率不是一个小时?
我已经尝试从模型库中拟合各种非线性模型,但没有一个产生令人满意的结果,并且不能使它们适应“y”曲线形状的日常变化。
接下来,我将尝试使用高斯过程,看看是否可以提高分辨率。
谢谢你,
-JGL
这是一个函数,可以为您提供一个新的区域列。它现在还不够智能,无法在您打开报告时运行,因此只需确保可以对窗口进行排序。
您需要做的就是运行该函数,然后调用 riemann_sum()
riemann_sum =功能(
{dt =当前数据表(), xcol = “挑选” , ycol = “挑选” , bycol = “挑选” },
{默认本地},
当前数据表(dt);
如果( xcol == “挑选” ,
数控 = N 列(dt);
磅宽 = 130 ;
nw =新窗户( 《莱曼总和》 ,
<<模态,
边框框(左边( 3个), 顶部( 2个),
V 列表框(
文本框( “获取曲线下的面积” ),
H 列表框(
V 列表框(
面板盒( “选择列” ,
colListData =列列表框(所有,宽度(lbWidth),nLines(最小值( 数控, 10 ) ) )
),
),
面板盒( “将选定的列转换为角色” ,
阵容箱( N 列( 2个), 间距( 3个),
按钮盒( “Y,专栏” , 列列表<<附加( colListData <<获得选择) ),
colListY =列列表框(
宽度( lbWidth ),
n行( 1个),
最大选择( 1个),
最小项目( 1个),
“数字”
),
按钮盒( “X” , colListX <<附加( colListData <<获得选择) ),
colListX =列列表框(
宽度( lbWidth ),
n行( 1个),
最大选择( 1个),
最小项目( 1个),
“数字”
),
按钮盒( “经过” , 列单 <<附加( colListData <<获得选择) ),
colListB =列列表框(宽度(lbWidth),nLines( 1个), 最大选择( 1个) )
)
),
面板盒( “行动” ,
阵容箱( N 列( 1个),
按钮盒( “好的” ,
ycol =柱子((colListY <<获取物品)[ 1个]);
xcol =柱子((colListX <<获取物品)[ 1个]);
nby =物品(colListB <<获取物品);
如果(nby,
bycol =柱子((colListB <<获取物品)[ 1个]),
bycol =新建专栏( “假货” , 公式(字符( 1个)));
);
),
按钮盒( “取消” , 净重 <<关闭窗口),
文本框( “” ),
按钮盒( “消除” ,
colListY <<删除选定;
colListX <<删除选定;
colListB <<删除选定;
),
)
)
)
)
)
);
);
总结( list_by = By( bycol ) );
dt <<种类( //排序以确保x是有序的
通过(bycol,xcol),
订单(升序,升序),
替换表
);
list_valuesx = xcol <<获取值;
list_valuesy = ycol <<获取值;
等待( 0.1 );
AA =关联数组();
为了( 我 = 1个, 我 <= N 项( list_by ), i++,
dt <<清除选择;
列表行 = dt <<获取行在哪里( bycol[排()] == list_by );
//dif_x 和 sum_y 是魔法发生的地方
dif_x = list_valuesx[列表行[ 2个:: ( N行( list_rows ))]] - list_valuesx[list_rows[ 1个:: (
N行(列表行)- 1个)]];
sum_y = .5 * (list_valuesy[list_rows[ 2个:: ( N行( list_rows ))]] + list_valuesy[list_rows[ 1个:: (
N行(列表行)- 1个)]]);
aa[list_by ] =和( dif_x
总和);
);
dt <<新建专栏( “不可缺少的” , 数字, 连续, 公式( aa[bycol[排()]] ));
柱子( , “不可缺少的” ) <<删除公式; //使它然后杀死它所以aa可以留在本地
如果(!nby, dt<<删除列({bycol}));
);
最好的方法是黎曼和。如果您的所有 x 间隔都相同,那么您只需求和并乘以您的间隔即可。
因此,在这种情况下,只需将当天的所有积分相加并乘以 1。