
概述本次有以下函数1、简单边际
概率2、联合概率3、条件概率4、随机变量期望值5、随机变量方差6、随机变量协方差7、联合协方差8、组合期望回报9、投资组合风险 说概率前复习下历史函数create_rand_list() #创建一个含有指定数量元素的listsum_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^2covar_fun() #协方差(标准差)-样本Strans_coef_fun() #变异系数CVpearson_fun() #相关系数-样本r---------------以上是旧的---------------------------------------------------------------------------------------以下是新的------------------------------------------------------------------------概率这块整个给我看了个懵逼,后面的代码都是按照我自己理解写的,如果有错误,欢迎指正另外说明的是概率是很精细的事情,所以浮点型的数字会比较多,而且小数位数十分精确,除特殊情况,我就四舍五入截取到小数点后4位简单事件,就是只有一个特征的事件,所有可能事件的集合就是样本空间,举个例子有两袋子花生米,第一个袋子有32个花生米,其中有3个坏的,第二个袋子有17个花生米,其中有5个坏的,这个例子的样本空间就是下面这样。我想说,要是我选了B袋子我一定诅咒卖花生的老板吃方便面没有调料袋子|是否坏的|花生米个数A |0 |3A |1 |29B |0 |5B |1 |12为了方便起见,是True用0表示,否false用1表示1、简单边际概率,记做P(A)这个容易理解,比如计算坏花生米的出现率,这个简单,就不单独写代码了P(A) = 坏花生米/总数 = 8/49 = 0.16332、联合概率既然是联合了,就需要两个事件,记为P(A且B),∩这玩意就是且就是A事件和B事件联合成同一个事件的概率,从A袋子吃出一个坏花生米的概率就是联合概率,事件A是坏花生米,事件B是A袋子这个比较有分歧,比较广泛使用的是P(A∩B) = 3/49 = 0.0612另一种就是P(A∩B) = 3/32*0.5 = 0.0517我个人比较同意第一种,但是受到其他事件的影响比较大,考虑如果B袋子有10000个花生,坏花生数不变,结果会有很大差异那么函数就有了def unite_rate_fun(condition_count,all_count):p_a_with_b = float(condition_count) / all_countreturn p_a_with_b3、条件概率一个事件已发生的情况下,得到另一个事件的发生概率,比较文言的说法是,给定事件B,事件A的发生概率,当然也可以反过来P(A|B) = P(A∩B)/P(B)反过来P(B|A) = P(A∩B)/P(A)还是这个例子,现在已知B事件是从A袋子取,那么P(B) = 32/49P(A|B) = (3/49)/(32/49) = 3/32 = 0.0937这个函数就是def condition_rate_fun(p_a_with_b,p_b):p_a_from_b = p_a_with_b / p_breturn p_a_from_b 下面的内容用花生米的例子就不合适了,换个学校的事一个班英语考试各分数的比例分数|占比20 |0.140 |0.160 |0.380 |0.4100 |0.14、随机变量期望值和算数平均数差不多,实际结果不应与这个数有太多偏差μ = E(X) = NΣXiP(Xi)E(X) = 20 * 0.1 + 40 * 0.1 + 60 * 0.3 + 80 * 0.4 + 100 * 0.1 = 66def e_x(count_list,rate_list):e_len = len_fun(count_list)if e_len == len_fun(rate_list):e_list = [count_list[i] * rate_list[i] for i in range(e_len)]e_num = sum_fun(e_list)else: return Nonereturn e_num5、随机变量方差和样本方差功能一样,不多说了σ^2 = NΣ[Xi-E(X)]^2P(Xi)def var_rand_fun(count_list,rate_list):e_num = e_x(count_list,rate_list)var_len = len_fun(count_list)if var_len == len_fun(rate_list):var_list = [((count_list[i] - e_num) ** 2) * rate_list[i] for i in range(var_len)]var_num = sum_fun(var_list)else: return Nonereturn var_num6、随机变量协方差函数简单,套用协方差函数即可def covar_rand_fun(count_list,rate_list):var_rand_num = var_rand_fun(count_list,rate_list)covar_num = var_rand_num ** 0.5return covar_num7、联合协方差σxy = NΣ[Xi-E(X)][Yi-E(Y)]P(XiYi)def covar_rand_xy_fun(x_count_list,y_count_list,xy_rate_list):e_x_num = e_x(x_count_list,xy_rate_list)e_y_num = e_x(y_count_list,xy_rate_list)covar_len = len_fun(x_count_list)if covar_len == len_fun(y_count_list) and covar_len == len_fun(xy_rate_list):covar_rand_xy_list = [(x_count_list[i] - e_x_num) * (y_count_list[i] - e_y_num) * xy_rate_list[i] for i in range(covar_len)]covar_rand_xy_num = sum_fun(covar_rand_xy_list)else: return Nonereturn covar_rand_xy_num8、组合期望回报用最小的风险能获得的最大回报E(P) = wE(X) + (1 - w)E(Y)w是投资资产x的比例def e_p(x_count_list,y_count_list,xy_rate_list):e_x_num = e_x(x_count_list,xy_rate_list)e_y_num = e_x(y_count_list,xy_rate_list)w = sum_fun(x_count_list) / (sum_fun(x_count_list) + sum_fun(y_count_list))e_p_num = w * e_x_num + (1 - w) * e_y_numreturn e_p_num9、投资组合风险这个没有搞懂是做什么的,应该是期望回报的偏差值吧σ(p) = [w^2σ(x)^2 + (1 - w)^2σ(y)^2 + 2w(1 - w)σ(xy)]^0.5def var_p_fun(x_count_list,y_count_list,xy_rate_list):w = sum_fun(x_count_list) / (sum_fun(x_count_list) + sum_fun(y_count_list))var_rand_x_num = var_rand_fun(x_count_list,xy_rate_list)var_rand_y_num = var_rand_fun(y_count_list,xy_rate_list)covar_rand_xy_num = covar_rand_xy_fun(x_count_list,y_count_list,xy_rate_list)var_p_num = (w * w * var_rand_y_num + (1 - w) * (1 - w) * var_rand_y_num + 2 * w * (1 - w) * covar_rand_xy_num) ** 0.5return var_p_numother、贝叶斯这个真的是看的最懵逼的,感觉我写的这个不准,就当做参考吧def bayes(true_coef,event_rate,event_bool,manage_num):'True = 0,False = 1'manage_num = manage_num - 1false_coef = 1 - true_coefevent_count = len_fun(event_rate)if event_bool[manage_num] == 0:main_rate = event_rate[manage_num] * true_coefelse:main_rate = event_rate[manage_num] * false_coefevent_true_list = [event_rate[n] * true_coef for n in range(event_count) if event_bool[n] == 0]event_false_list = [event_rate[n] * true_coef for n in range(event_count) if event_bool[n] == 1]event_sum = sum_fun(event_true_list) + sum-fun(evemt_false_list)event_succe_rate = main_rate/event_sumreturn event_succe_rate
本次有以下函数
1、简单边际概率
2、联合概率
3、条件概率
4、随机变量期望值
5、随机变量方差
6、随机变量协方差
7、联合协方差
8、组合期望回报
9、投资组合风险
说概率前复习下历史函数 #创建一个含有指定数量元素的list #累加 #统计个数 #累乘 #算数平均数 #算数平均数计算回报 #中位数 #众数 #极差 #几何平均数 #几何平均回报 #方差-样本S^2 #协方差(标准差)-样本S #变异系数CVhref="https://www.cnblogs.com/xiu123/p/9420799.HTML" target="_blank">pearson_fun() #相关系数-样本r---------------以上是旧的---------------------------------------------------------------------------------------以下是新的------------------------------------------------------------------------概率这块整个给我看了个懵逼,后面的代码都是按照我自己理解写的,如果有错误,欢迎指正另外说明的是概率是很精细的事情,所以浮点型的数字会比较多,而且小数位数十分精确,除特殊情况,我就四舍五入截取到小数点后4位简单事件,就是只有一个特征的事件,所有可能事件的集合就是样本空间,举个例子有两袋子花生米,第一个袋子有32个花生米,其中有3个坏的,第二个袋子有17个花生米,其中有5个坏的,这个例子的样本空间就是下面这样。我想说,要是我选了B袋子我一定诅咒卖花生的老板吃方便面没有调料袋子|是否坏的|花生米个数A |0 |3A |1 |29B |0 |5B |1 |12为了方便起见,是True用0表示,否false用1表示1、简单边际概率,记做P(A)这个容易理解,比如计算坏花生米的出现率,这个简单,就不单独写代码了P(A) = 坏花生米/总数 = 8/49 = 0.16332、联合概率
既然是联合了,就需要两个事件,记为P(A且B),∩这玩意就是且就是A事件和B事件联合成同一个事件的概率,从A袋子吃出一个坏花生米的概率就是联合概率,事件A是坏花生米,事件B是A袋子这个比较有分歧,比较广泛使用的是P(A∩B) = 3/49 = 0.0612另一种就是P(A∩B) = 3/32*0.5 = 0.0517我个人比较同意第一种,但是受到其他事件的影响比较大,考虑如果B袋子有10000个花生,坏花生数不变,结果会有很大差异那么函数就有了
= float(condition_count) / p_a_with_b3、条件概率一个事件已发生的情况下,得到另一个事件的发生概率,比较文言的说法是,给定事件B,事件A的发生概率,当然也可以反过来P(A|B) = P(A∩B)/P(B)反过来P(B|A) = P(A∩B)/P(A)还是这个例子,现在已知B事件是从A袋子取,那么P(B) = 32/49P(A|B) = (3/49)/(32/49) = 3/32 = 0.0937这个函数就是
= p_a_with_b / p_a_from_b下面的内容用花生米的例子就不合适了,换个学校的事一个班英语考试各分数的比例分数|占比20 |0.140 |0.160 |0.380 |0.4100 |0.14、随机变量期望值和算数平均数差不多,实际结果不应与这个数有太多偏差μ = E(X) = NΣXiP(Xi)E(X) = 20 * 0.1 + 40 * 0.1 + 60 * 0.3 + 80 * 0.4 + 100 * 0.1 = 66
= e_len === [count_List[i] * rate_List[i] i =: e_num5、随机变量方差和样本方差功能一样,不多说了σ^2 = NΣ[Xi-E(X)]^2P(Xi)
== var_len === [((count_List[i] - e_num) ** 2) * rate_List[i] i =: var_num6、随机变量协方差函数简单,套用协方差函数即可
== var_rand_num ** 0.5 covar_num7、联合协方差σxy = NΣ[Xi-E(X)][Yi-E(Y)]P(XiYi)
=== covar_len == len_fun(y_count_List) covar_len === [(x_count_List[i] - e_x_num) * (y_count_List[i] - e_y_num) * xy_rate_List[i] i =: covar_rand_xy_num8、组合期望回报用最小的风险能获得的最大回报E(P) = wE(X) + (1 - w)E(Y)w是投资资产x的比例
= sum_fun(x_count_List) / (sum_fun(x_count_List) += w * e_x_num + (1 - w) * e_p_num9、投资组合风险这个没有搞懂是做什么的,应该是期望回报的偏差值吧σ(p) = [w^2σ(x)^2 + (1 - w)^2σ(y)^2 + 2w(1 - w)σ(xy)]^0.5
= sum_fun(x_count_List) / (sum_fun(x_count_List) +==== (w * w * var_rand_y_num + (1 - w) * (1 - w) * var_rand_y_num + 2 * w * (1 - w) * covar_rand_xy_num) ** 0.5 var_p_numother、贝叶斯这个真的是看的最懵逼的,感觉我写的这个不准,就当做参考吧
= manage_num - 1= 1 -= event_bool[manage_num] === event_rate[manage_num] *= event_rate[manage_num] *= [event_rate[n] * true_coef n range(event_count) event_bool[n] === [event_rate[n] * true_coef n range(event_count) event_bool[n] == 1= sum_fun(event_true_List) + sum-= main_rate/ event_succe_rate 总结 以上是内存溢出为你收集整理的统计算法_概率基础全部内容,希望文章能够帮你解决统计算法_概率基础所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
评论列表(0条)