<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。