目錄介紹
背景使用**
用ramanujan
的階乘近似值計算
c#中的泊松分布
如果需要用於很大型
lambda
的泊松累積分布函式,則可以使用此**。
泊松概率質量函式的公式為:
#中,可以將其計算為:
public double cdf(long k)
return sum;
}
問題在於,隨著k和
_lambda
(_lambda = λ)
增加,分母都變得非常大,並且程式崩潰。這可以通過使用對數來解決。為簡單起見,自然對數是用於:
計算使用對數和
ramanujan
的階乘近似表示: 請
在此處詳細了解。 設定
math.pow(_lambda, i) / factorial(i)= (a) = (\frac})給出了
通過使用
ramanujan
的階乘近似,我們得到:
#表示法並利用
a = math.pow(e, i*ln(
ℷ) -i*ln(i) + i - ln(i*(1 + 4*i*(1 + 2*i)))/6 - ln(
π)/2))
可以在c#計算中使用此表示式,如以下**所示:
var log6thtail = math.log(i * (1 + 4 * i * (1 + 2 * i)))/6;
var lnn = i * math.log(_lambda) - (i * math.log(i) - i + log6thtail + logpidivtwo);
n = math.pow(math.e, lnn - _lambda);
這是**:
using system;
namespace poissonevaluator
public double pmf(long k)
return math.pow(math.e, -_lambda) * math.pow(_lambda, k) / factorial(k);
} public double cdf(long k)
else
else
}sum += n;
i++;
}return (sum > 1) ? 1.0 : sum;
} public double factorial(long k)
return factorial;
} }
泊松抽樣函式的實現
為了產生泊松分布抽樣間隔,首先需要決定抽樣的引數 例如平均抽樣間隔是 30 秒,時間單位為秒,那麼 30,1 30 然後,產生一系列指數分布的 偽 隨機數e1 e2,en 第一次抽樣的時刻為e1 第二次抽樣的時刻為e1 e2 等等,依此類推 一種生成指數分布的 偽 隨機數ei 的方法 在0 和 1 ...
關於泊松過程的引數估計
泊松過程的事件間隔之間服從指數分布,如果我能從資料中找到每個spike發生的時刻,那麼每個spike之間的時間也就隨之確定。關於指數分布的引數估計,可見下面 關鍵步驟截圖如下 這是在假設神經元的脈衝完全符合泊松分布下的推理。當然,神經元的spikes不是完全符合泊松過程的,我們需要進一步的優化。目前...
正態分佈與泊松分布的關係
正態分佈 normal distribution 又名高斯分布 gaussian distribution 正規分布,是乙個非常常見的連續概率分布。正態分佈在統計學上十分重要,經常用在自然和社會科學來代表乙個不明的隨機變數。若隨機變數x服從乙個位置引數為 mu 尺度引數為 sigma 的正態分佈,記...