本次函式有
1、階乘
2、計算組合數C(n,x)
3、二項概率分佈
4、泊松分佈
以下是歷史函式
create_rand_list() #建立一個含有指定數量元素的list
sum_fun() #累加
len_fun() #統計個數
multiply_fun() #累乘
sum_mean_fun() #算數平均數
sum_mean_rate() #算數平均數計算回報
median_fun() #中位數
modes_fun() #眾數
ext_minus_fun() #極差
geom_mean_fun() #幾何平均數
geom_mean_rate() #幾何平均回報
var_fun() #方差-樣本S^2
covar_fun() #協方差(標準差)-樣本S
trans_coef_fun() #變異係數CV
pearson_fun() #相關係數-樣本r
unite_rate_fun #聯合概率
condition_rate_fun #條件概率
e_x #隨機變數期望值
var_rand_fun #隨機變數方差
covar_rand_fun #隨機變數協方差
covar_rand_xy_fun #聯合協方差
e_p #組合期望回報
var_p_fun #投資組合風險
bayes #貝葉斯
—————以上是舊的————————————————————————
—————以下是新的————————————————————————
繼續概率,本次是二項分佈和泊松分佈,這個兩個還是挺好玩的,可以作為預測函式用,因為函式比較少,本次就不給例子了,但是會對函式做逐一說明
1、階乘n!
就是每次-1乘,直到*1,例如5! = 5 * 4 * 3 * 2 * 1 = 120,這個是正常的,但是在寫函式的時候這樣演算法效率會低些,因此直接反過來,1*2*3…這種,那麼函式就是
def fact_fun(n): if n == 0: return 1 n += 1 fact_list = [i for i in range(1,n)] fact_num = multiply_fun(fact_list) return fact_num
2、計算組合數C(n,x)
C(n,x) = n! / (x! * (n – x)!)
表示從n個樣本中抽取x個樣本單元,可能出現結果的組合數,例如從5個物品中抽取3個物品,這三個物品的組合數就是10種
def c_n_x(case_count,real_count): fact_n = fact_fun(case_count) fact_x = fact_fun(real_count) fact_n_x = fact_fun(case_count - real_count) c_n_x_num = fact_n / (fact_x * fact_n_x) return c_n_x_num
3、二項概率分佈
執行n次伯努利試驗,伯努利試驗就是執行一次只有兩種可能且兩種可能互斥的事件,比如丟硬幣實驗,執行n次,成功k次的概率
P(ξ=K) = C(n,k) * p^k * (1-p)^(n-k)
n=5 k=3 P(ξ>=K) = p(K = 3) + p(K = 4) + p(K = 5)
p表示一個事件的成功概率,失敗則是1 – p
def binomial_fun(case_count,real_count,p): c_n_k_num = c_n_x(case_count,real_count) pi = (p ** real_count) * ((1 - p) ** (case_count - real_count)) binomial_num = c_n_k_num * pi return binomial_num
4、泊松分佈
給定的一個機會域中,機會域可以是一個範圍,也可以是一段時間,在這個機會域中可能發生某個統計事件的概率,舉個例子,比有個商店,每小時平均有10位顧客光顧,那麼一個小時有13位顧客光顧的概率,就是泊松分佈,13位顧客光顧就是統計事件
P(X) = (e^-λ*λ^X)/X! = (2.7182818^-10*10^13)/13! = 0.0729
這裡的λ是指平均值,可以使用算數平均數得到,e是自然常數~=2.7182818,有函式
def poisson_fun(chance_x, case_list = [0],mean_num = 0): chance_x_fact = fact_fun(chance_x) e = 2.7182818 if len_fun(case_list) == 1 and case_list[0] == 0: poisson_num = ((e ** (0-mean_num)) * mean_num ** chance_x) / chance_x_fact else: mean_num = sum_mean_fun(case_list) poisson_num = ((e ** (0-mean_num)) * mean_num ** chance_x) / chance_x_fact return poisson_num
這個函式需要說明下,實際需要的是兩個引數,一個平均值另一個是期望統計量,之所以指定了3個函式是因為可能輸入的不一定是一個數字,也可能是個list,那麼會有兩種計算方式,這個已在if中體現,引用方法有兩種,例如
if __name__ == `__main__`: # 第一種 poisson_rate = poisson_fun(mean_num = 10,chance_x = 13) print poisson_rate # 第二種 case_list = [8,9,10,11,12] poisson_rate = poisson_fun(case_list = case_list ,chance_x = 13) print poisson_rate