2016-01-23 64 views
0

這是一部分編程,部分統計數學問題。 我有一個數據集,我想獲得最頻繁的數字(模式),問題是我處理的值有輕微的變化。數據集中最常見的值(含變化)

所以通常{1,2,50,50,90}最頻繁的號碼將是50

但在我的情況下,數字看起來是這樣的: {1,2,49,50,51, 90}但結果仍然是50

所以我的問題是我如何有效地計算這個數字,並且是否有這個數字的統計術語?

一些僞代碼:

Float items.val[] = {1,2,49,50,51,90}; 
Float threshold = 4; 
For (item in items) { 
    For (subitem in items){ 
      Float dist=Distance(time,subitem) 
      If (dist < threshold){ 
       item.dist += dist 
      } 
    } 
} 
Output=Sort(item.dist)[0] 
+1

這個編程如何相關?爲什麼結果50? – Amit

+0

我需要編寫一個C++函數來計算它。這個數字是50,因爲我需要最頻繁的數字,只有很小的變化。所以,雖然我找不到最頻繁的數字,我可以找到最「附近的鄰居」 – Malu05

+0

我投票結束這個問題作爲題外話。閱讀[問]。 – Amit

回答

1

有多種方法去了解這一點。 (1)最仔細,確切的方法是假設觀測值的概率模型,並尋找推斷值的模式(作爲期望值或最可能或其他標準)。我會猜測在這種情況下這是太多的工作,儘管給予無限的時間,我肯定會想這樣做。 (2)構造直方圖,並查找具有最大密度(密度=(#單元中的單元格)/(單元的寬度))的垃圾箱。這並不一定產生單一的價值。 (3)擬合觀測值的參數分佈,並報告擬合分佈的模式。

您可能會在stats.stackexchange.com上爲此問題獲得更多的支持。祝好運並玩得開心點。

編輯:看你的例子代碼後,我發現它與(2)以上沒有太大的不同。這似乎是一個合理和可行的方法。