统计算法_概率基础
2018-08-13 07:48:33来源:博客园 阅读 ()
说概率前复习下历史函数
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
---------------以上是旧的------------------------------------------------------------------------
---------------以下是新的------------------------------------------------------------------------
概率这块整个给我看了个懵逼,后面的代码都是按照我自己理解写的,如果有错误,欢迎指正
另外说明的是概率是很精细的事情,所以浮点型的数字会比较多,而且小数位数十分精确,除特殊情况,我就四舍五入截取到小数点后4位
简单事件,就是只有一个特征的事件,所有可能事件的集合就是样本空间,举个例子
有两袋子花生米,第一个袋子有32个花生米,其中有3个坏的,第二个袋子有17个花生米,其中有5个坏的,这个例子的样本空间就是下面这样。我想说,要是我选了B袋子我一定诅咒卖花生的老板吃方便面没有调料
袋子|是否坏的|花生米个数
A |0 |3
A |1 |29
B |0 |5
B |1 |12
为了方便起见,是True用0表示,否false用1表示
1、简单边际概率,记做P(A)
这个容易理解,比如计算坏花生米的出现率,这个简单,就不单独写代码了
P(A) = 坏花生米/总数 = 8/49 = 0.1633
2、联合概率
既然是联合了,就需要两个事件,记为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 = condition_count * all_count return p_a_with_b
3、条件概率
一个事件已发生的情况下,得到另一个事件的发生概率,比较文言的说法是,给定事件B,事件A的发生概率,当然也可以反过来
P(A|B) = P(A∩B)/P(B)
反过来
P(B|A) = P(A∩B)/P(A)
还是这个例子,现在已知B事件是从A袋子取,那么P(B) = 32/49
P(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_b return p_a_from_b
下面的内容用花生米的例子就不合适了,换个学校的事
一个班英语考试各分数的比例
分数|占比
20 |0.1
40 |0.1
60 |0.3
80 |0.4
100 |0.1
4、随机变量期望值
和算数平均数差不多,实际结果不应与这个数有太多偏差
μ = E(X) = NΣXiP(Xi)
E(X) = 20 * 0.1 + 40 * 0.1 + 60 * 0.3 + 80 * 0.4 + 100 * 0.1 = 66
def 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 None return e_num
5、随机变量方差
和样本方差功能一样,不多说了
σ^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) * rate_list[i] for i in range(var_len)] var_num = sum_fun(var_list) else: return None return var_num
6、随机变量协方差
函数简单,套用协方差函数即可
def covar_rand_fun(count_list,rate_list): var_rand_num = var_rand_fun(count_list,rate_list) covar_num = var_rand_num ** 0.5 return covar_num
7、联合协方差
σ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 = (x_count_list,xy_rate_list) e_y_num = (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 None return covar_rand_xy_num
8、组合期望回报
用最小的风险能获得的最大回报
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_num return e_p_num
9、投资组合风险
这个没有搞懂是做什么的,应该是期望回报的偏差值吧
σ(p) = [w^2σ(x)^2 + (1 - w)^2σ(y)^2 + 2w(1 - w)σ(xy)]^0.5
def 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.5 return var_p_num
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 20190710-汉诺塔算法 2019-07-24
- Python用摘要算法生成token及检验token 2019-07-24
- python算法与数据结构-二叉树的代码实现(46) 2019-07-24
- python算法与数据结构-数据结构中常用树的介绍(45) 2019-07-24
- python算法与数据结构-栈(43) 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash