延續上一講的雙域視角(巨孔隙/微孔隙),這一講的參數會分成兩組來看:定義「桶子形狀」的靜態參數(LL、DUL、SAT、bulk density),跟決定「桶子怎麼漏水」的動態參數(SWCON、𝐾𝑠𝑎𝑡)。 3.1 靜態參數:桶子的三條水位線 (1) LL(Lower Limit,凋萎點下限) 這是植物完全無法吸取的水分下限,操作型定義通常對應到 −1.5 MPa(15 bar)的基質勢。在微孔隙/巨孔隙框架下,LL 描述的完全是微孔隙域——這個含水量下,水被吸附在極細孔隙的表面,基質勢極負,只存在於微孔隙的毛細跟吸附作用力範圍內,巨孔隙在這個含水量早就空了。 DSSAT 通常用 LL(而不是永久凋萎點 wilting point)這個名稱,是因為它其實是「特定作物根系可達到的下限」,理論上依作物種類、根系穿透力略有差異,但實務上常直接借用土壤的物理凋萎點。 (2) DUL(Drained Upper Limit,排水上限) 這是整套 bucket 理論裡最關鍵的一條線——它同時也是上一講講的「巨孔隙排水」的觸發點:𝑆𝑊> 𝐷𝑈𝐿 SW>DUL 才會啟動𝐷𝑅𝐴𝐼𝑁𝐿 方程。 物理意義上,DUL 是「重力排水已經(近似)結束、只剩微孔隙毛細力撐著水」的那個含水量,通常對應基質勢在 −10 到 −33 kPa 之間(視質地而定,砂土接近 −10 kPa,黏土接近 −33 kPa)。用雙域語言講:DUL 就是巨孔隙域清空、微孔隙域仍飽滿的那條分界線。這也是為什麼 DUL 不是一個絕對的物理常數,而是跟排水時間、量測方式高度相關的操作型定義——現場量測通常是「飽和後排水1–2天」的含水量,這個「1–2天」本身就是承認巨孔隙排水需要一點時間,但排水速率遠快於微孔隙。 (3) SAT(Saturation,飽和含水量) 這是巨孔隙+微孔隙全部孔隙都灌滿水時的含水量,約等於總孔隙度 𝜙 。注意上一講 Emerman 論文提到的關鍵假設——「巨孔隙域跟微孔隙域必須有相同的飽和含水量才能讓雙域模型的擬合站得住腳」。這句話反過來提醒你:SAT 這個看似簡單的參數,其實隱含了「兩個域共享同一個總孔隙空間」的假設,在真實土壤中不一定成立(比如強烈結構化的黏土,巨孔隙可能只佔總孔隙度很小一部分)。 (4) Bulk...
比較模擬結果的方法有很多種,我們可以分為兩種類類型,(1) 模擬值與量測值的相關性、(2) 模擬與量測值的誤差。
基於相關性的模擬結果評估方法
基於相關性的評估方法中,最常見的方法是進行模擬與實測值的簡單線性回歸,通常會將模擬值輸出為y軸,實測值輸出為x軸,當斜率接近1、截距接近0、R2接近1時,我們可以可以認定為良好的模式。
另一個方法就是計算 r - 相關係數(Correlation coefficient)
$r=\tfrac{\sum\limits_{i=1}^n(o_i-\bar{o})(s_i-\bar{s})}
{\sqrt{\sum\limits_{i=1}^n(o_i-\bar{o})^2}\sqrt{\sum\limits_{i=1}^n(s_i-\bar{s})^2}}$
符號 $o_i$ 代表實測值、 $s_i$ 代表相對應的模擬值
基於誤差的評估方法
常見的包括RMSE, RRMSE, MAE, EF,以下分別進行說明,
所使用的符號 $o_i$ 代表實測值、 $s_i$ 代表相對應的模擬值
均方根差 (RMSE)
最常見的方法為均方根誤差(root mean squre error,RMSE),計算公式如下:
$RMSE = \sqrt{ \tfrac{1}{n} \times \sum\limits_{i=1}^n (o_i - s_i)^2 }$
另外也可以將RMSE除以實測值的平均值,成為相對均方根誤差(relative root mean square error, RRMSE),公式如下
$RRMSE = \tfrac{RMSE} {\bar{o_i} }$
通常均方根誤差都帶有單位,例如RMSE = 653.2 (kg/ha),代表模擬與實測的產量誤差有653.2,RRMSE就可以代表相對值例如0.23,可以提供我們了解RMSE 的的佔比。
無腦指標 - EF
推薦一個無腦的指標就是EF (Nash–Sutcliffe Efficiency),公式如下
$EF=1-\tfrac{ \sum\limits_{i=1}^n (o_i-s_i)^2 }
{ \sum\limits_{i=1}^n (o_i - \bar{o_i})^2 }$
如果是完美的模式,模擬值會與實測值相同,也就是 $s_i = o_i$,因此EF = 1。
如果每次的模擬值都是實測的平均值,也就是 $s_i = \bar{o_i}$,計算起來EF = 0,我們可以說EF = 0 的模式並不是好模式,只要用一個平均值去猜就跟模擬值一樣了;如果EF < 0,就顯示這個模式比平均值還要差。
在這邊可做一個簡單的結論是
EF = 1,完美模式
EF = 0,不好 (模式預測效果和使用平均值一樣)
EF < 0,差 (模式預測結果比使用平均值猜測更糟糕)
EF其實也是R2的另一種形式
我們重新整理EF值的公式 ,可以改寫成如下
$EF = 1- \tfrac{MSE}{MSE_{\bar y}}$
其中,
$MSE_\bar{y} = \sum\limits_{i=1}^n (y_i- \bar{y})
= var(y)(n/1)/n$
可以理解$MSE_\bar{y}$為模擬值使用實測平均值($\bar o$) 所計算出來的平均誤差,EF值是比較MSE和$MSE_\bar{y}$ 的結果,因此EF的分子項(MSE)是用來計算模式無法解釋的觀察資料變異量,而分母則衡量的是觀察值的總變異量。
這正是決定係數(R2)的其中一種定義
$R^2 = 1- \tfrac{TSS}{RSS}$
兩者都是 $ 1- \tfrac{模型預測誤差平方和}{觀察資料總變異}$
程式指令
R語言指令
Performance <- function(sim, obs){
S <- sim
O <- obs
meanO <- mean(O)
n <- length(S)
wl = 0; se = 0; dif = 0; sd = 0
for(i in 1:n){
## difference from sim and obs (ME)
dif <- dif + (O[i]-S[i])
## square value of difference between sim and obs - se (RMSE,ME,EF,d)
se <- se + (O[i]-S[i])^2
## calculate deviation square for d
dist <- abs(O[i]-meanO)+abs(S[i]-meanO)
wl<- wl + dist^2
## calculate the squared distance value of observed (EF)
sd <- sd + (O[i]-meanO)^2
}
## calculate the parameter
ME <- dif/n
RMSE <- sqrt(se/n)
d <- 1 - se/wl
EF <- 1- se/sd
## linear regression
lmout <- lm(S~O)
intercept <- summary(lmout)$coefficient[1]#intercept
slope <- summary(lmout)$coefficient[2]#slope
r2 <- summary(lmout)$r.squared
p <- summary(lmout)$coefficients[8]#p value
return(c(n,round(RMSE,3), round(ME,3), round(d,3), round(EF,3),
round(intercept,3), round(slope,3),round(r2,3),round(p,3))
)
}
參考文獻
- Soltani, A., T.R. Sinclair (2012) Modeling Physiology of Crop Development, Growth and Yield. CABI, USA.
- Wallach, D., D. Makowski, J.W. Jones, and F. Brun (2019) Working with Dynamic Crop Models: Methods, Tools, and Examples for Agriculture and Environment. Elsvier, United Kingdom
留言
張貼留言