王舵
(遼寧省計量科學研究院,沈陽 110004)
蒙特卡洛法(MCM)作為《測量不確定度表示指南》(GUM)的重要補充方法,可有效地解決測量模型非線性等諸多不確定度評定問題[1]。近年來,國內外對MCM評定不確定度做了許多研究,在物理學、生物學、工程科學等領域MCM得到了廣泛的應用[2]。研究結果表明,與GUM相比,MCM沒有明顯的不同,具有很好的評定效果[3–6]。但MCM計算簡單,不用考慮各分量之間的相關性,不需為簡化評定過程而忽略某些影響因素,評定過程更加方便易行[7]。目前,相關的研究主要實施在MATLAB計算平臺上[8–11]。MATLAB作為一款商業(yè)軟件在各個方面都十分完善,但其使用費用并不能被人們廣泛接受。隨著人工智能的飛速發(fā)展,Python軟件作為一款開源軟件在科學計算領域占據了主導地位。與商業(yè)軟件MATLAB相比,Python具有免費、跨平臺、函數庫完善等諸多優(yōu)點,非常適用于科學計算[12]。毛細管電泳是一種效率極高的分離分析技術,在很多領域都有廣泛的應用[13]。多數的研究都集中在分析毛細管電泳分離過程中各因素對實驗結果不確定度的影響[14],但對毛細管電泳法檢出限的不確定度評定卻鮮有報道。與直接以標準物質為研究對象的檢出限不確定度評定不同,毛細管電泳儀檢定規(guī)程[15]中的計量方法需要采用多級稀釋的方式配制溶液,這為檢出限不確定度的評定引入了更多的影響因素。筆者以毛細管電泳儀檢出限的不確定評定為例,以GUM評定過程為對照,詳細討論了Python在MCM上的具體應用與分析。
GUM是采用“不確定度傳播率”計算合成被測量估計值的測量不確定度評定方法。通過建立測量模型,分析不確定度來源,計算傳播系數,評定輸入量的標準不確定度,計算合成標準不確定度,確定擴展不確定度等步驟完成不確定度的評定。
MCM為Monte Carlo Method 的簡寫,是采用“概率分布傳播”的通用方法來評估被測量的測量不確定度。MCM要求建立測量模型,確定輸入量的概率密度函數(PDF),并通過隨機抽取每個輸入量的值,重復計算多次(通常為1×105到1×106次),分析計算結果,確定被測量的估計值及其包含區(qū)間。
毛細管電泳儀:K1050型,北京凱奧科技發(fā)展有限公司。
維生素B6純度標準物質:純度為99.9%,擴展不確定度為0.4%(k=2),編號為GBW(E) 100183,中國計量科學研究院。
對于2×10–6g/mL的維生素B6溶液的配制,JJG 964–2001 《毛細管電泳儀》檢定規(guī)程中給出了具體方法。
采用兩級稀釋的方式配制維生素B6溶液:首先,稱取10.0 mg溶于100 mL容量瓶中,配制1.0×10–4g/mL維生素B6溶液溶液。然后,取2 mL 1.0×10–4g/mL維生素B6溶液溶液稀釋到100 mL容量瓶中,配制成2.0×10–6g/mL維生素B6溶液。按式(1)計算維生素B6溶液的質量濃度。
式中:ρ——維生素B6標準溶液的質量濃度,g/mL;
m——維生素B6的質量,mg;
P——維生素B6的純度;
V——溶液定容體積,mL;
1 000——單位換算系數。
依據毛細管電泳儀檢定規(guī)程,采用質量濃度為2×10–6g/mL的維生素B6溶液,連續(xù)進樣3次測定峰高,按式(2)計算檢出限。
式中:D——檢出限,g/mL;
HN——噪聲峰高;
ρ——維生素B6標準溶液的質量濃度;
H——樣品峰高。
采用《化學分析中不確定度的評估指南》[16]中的方法,按式(3)以相對不確定度計算傳播率:
以毛細管電泳儀檢出限的測量不確定度為例,對GUM與MCM在不確定度評定中的應用進行比較,結果列于表1。
表1 GUM與MCM不確定度評定應用比較
續(xù)表1
MCM法不確定度評定的完整程序代碼如下。
以上代碼可直接輸入Python編譯器中運行。注意代碼中的縮進不可省略。
MCM的計算結果與GUM結果相同,表明MCM的評估方法具有很好的效果。采用Python進行MCM計算分析,與傳統(tǒng)的GUM相比,代碼實現更加簡單,且無關數學模型的復雜性,不需求導不確定度傳播系數,可直接通過計算獲得結果,計算速度快,計算精度高。
對計算結果做進一步分析。圖1為MCM計算結果的概率分布。從圖1可以看出,毛細管電泳儀檢出限的計算結果具有正態(tài)分布的形態(tài),符合線性模型下GUM分析的理論基礎,是對GUM分析結果的進一步驗證。由于計算結果具有對稱的分布形態(tài),可以依據需求選取概率范圍,確定正確的k值用于計算擴展不確定度。
圖1 檢出限MCM計算結果的PDF和CDF
圖2為計算結果與計算次數的關系展示。由圖2可以看出,隨著計算次數的增加,計算結果的平均值(檢出限)與標準偏差(標準不確定度)越接近理論計算值。當計算次數大于1×104次試驗時,計算結果足夠穩(wěn)定。更大數量的試驗能夠提供更平滑的PDF,得到更準確的結果。
以上是基于理想條件下的分析,直接將峰高的測量值理論化為正態(tài)分布,但實際的測量為有限次的測量,不可能獲取到正態(tài)分布內的全部值,因此,需要分析在實際采樣條件下計算結果的分布情況。
在Python中提供了random.choices()的方法,即在已知采樣序列中隨機選取數值的方法。將11次測量的樣本作為研究對象,每次從中隨機取出3個數值作為一次試驗的可能取值用于計算。將相關代碼更改如下:
圖2 檢出限MCM計算結果與計算次數的關系
經過M=1×106次循環(huán)計算,得出計算結果:
檢出限(計算結果平均值):1.13×10–8g/mL。
檢出限的標準不確定度(計算結果標準偏差):1.83×10–9g/mL。
基于實際采樣計算結果與理論計算結果相同。
圖3為基于采樣值模擬計算后的PDF和CDF??梢钥闯?,基于實際采樣進行計算的結果,盡管得到的檢出限和標準不確定度與原計算相同,但計算結果的分布卻非常不同,不再完全符合正態(tài)分布。由于計算結果不再有對稱分布,則不能直接確定k值計算擴展不確定度。擴展不確定度應采用區(qū)間的表示方式,結合累計概率密度分布函數(CDF),通過百分位點獲取擴展不確定度的上限和下限。
圖3 基于采樣值的MCM計算結果的PDF和CDF
實際上對從11次測量值隨機選取3個測量值這種方式做進一步分析表明,經過1×106次循環(huán)計算可以得到與正態(tài)分布相同的平均值和標準偏差。平均值與標準偏差相同,而計算結果的分布有巨大差異的原因是數據的有限性,即有限的數據未能正確地反應正態(tài)分布特性。多數儀器的重復測量在理論上應符合正態(tài)分布,但如果不符合正態(tài)分布,應采用實際數據進行計算,這樣才能獲得正確的不確定度評定結果。
從計算結果可以看出,MCM能夠獲得與GUM相同的結果。但MCM不需計算傳播系數,不需精簡模型,能夠獲得包含實際采樣信息在內的更為全面準確的計算結果。該方法基本涵蓋了Python軟件在不確定度計算時所需的全部代碼,方便在其它研究中參考使用。