我正在比較兩個不同的公式來計算 R 的百分比,盡管它們是等價的并且應該產生完全相同的值(如果我的數學沒有嚴重錯誤的話),它們似乎并沒有產生確切的結果。
讓我給你舉個例子:
set.seed(123)
a<-rnorm(100)
perc_1<-(a/sum(a))*100
perc_2<-(a*100)/sum(a)
現在,根據用于檢查它們是否相等的函式,您存在差異:all.equal(perc_1,perc_2)is TRUEbut, all(perc_1==perc_2)is FALSE。但是,我可以理解它們會產生不同的結果,因為后者測驗完全相等,而前者測驗接近完全相等。
如果我對差異進行總結,我會得到:
summary(perc_1-perc_2)
Min. 1st Qu. Median Mean 3rd Qu. Max.
-3.553e-15 0.000e 00 0.000e 00 1.818e-17 0.000e 00 3.553e-15
所以,我的問題是:有人對這種差異有解釋嗎?
提前致謝。
uj5u.com熱心網友回復:
這是因為數字精度在計算機中的表示方式(可持續 - 并非每個人都需要超過 15 個小數位的精度)。此外,數字以二進制處理!!!
精度是指它可以表示的位數。例如,浮點數是一種 32 位資料型別,可提供小數點后 7 位的精度。為了獲得更好的精度,必須使用提供高達 15 位精度的雙精度資料型別并使用 64 位表示。
現在,您可以在摘要中看到不等式存在于小數點后 15 位附近,這是預期的,因為在那之后表示不精確。為了得到精確的計算,你必須有一個可以跨越二進制整個表示的資料型別。嘗試創建自己的 128 位表示,您會發現精度有所提高。:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/518229.html
標籤:r数学
上一篇:使用R的子組差異
下一篇:can_ok帶匿名函式
