R语言:求二维随机变量数学期望

来源:互联网 发布:易语言qq加好友源码 编辑:程序博客网 时间:2024/05/17 01:54

想做一个二维变量数学期望实验, 查看若干资料终于找到方法

先看这篇文章熟悉一下R的函数

http://www.cyclismo.org/tutorial/R/tables.html

构造数据

通过下面的函数构造了,正态分布和泊松分布的两列数据

A <- data.frame(a=round(rnorm(10,20,9)), b=rpois(10, lambda=10))

> A <- data.frame(a=round(rnorm(10,20,9)), b=rpois(10, lambda=10))> A    a  b1  22 142  21  73  20 114  20 105  12 136  17 157  15  98   3  89  14 1210  3  9

如何理解这个数据:

  可以这样来, 就是说我拿了一个零件它的长是A,宽是B, 我在a, b 填入这些数据, 我总共查看了10个零件, 就得到上面这些数据

  这样这批零件矩形的长服从正态分布 均值是20, 方差是9,  而宽服从泊松分布 lambda是 10 (我们对正态分布强行取整)

构造频率表

用 mytable <-table(A[[1]],A[[2]]) 直接得到

> mytable <-table(A[[1]],A[[2]])> mytable         7 8 9 10 11 12 13 14 15  3  0 1 1  0  0  0  0  0  0  12 0 0 0  0  0  0  1  0  0  14 0 0 0  0  0  1  0  0  0  15 0 0 1  0  0  0  0  0  0  17 0 0 0  0  0  0  0  0  1  20 0 0 0  1  1  0  0  0  0  21 1 0 0  0  0  0  0  0  0  22 0 0 0  0  0  0  0  1  0

如何理解:

   二维随机变量 X,Y 可能值构成矩阵中所有的点, 值表示样本的出现次数

求列的边沿概率密度

v = margin.table(mytable,1) /  margin.table(mytable)

> v = margin.table(mytable,1) /  margin.table(mytable) > v  3  12  14  15  17  20  21  22 0.2 0.1 0.1 0.1 0.1 0.2 0.1 0.1 

求数学期望

按照定义求, 先分离两个向量

as.vector(v) 是: 0.2 0.1 0.1 0.1 0.1 0.2 0.1 0.1 as.integer(names(v)) 是:3  12  14  15  17  20  21  22 

求向量内积

> as.vector(v) %*% as.integer(names(v))     [,1][1,] 14.7

貌似差别很大, 可能方差设置太大, 并且我很还对正态分布强行取整

如果我把样本个数调节到1000, 就与生成数据时设定的 20 很接近了

> A <- data.frame(a=round(rnorm(1000,20,9)), b=rpois(1000, lambda=10))> mytable <-table(A[[1]],A[[2]])> v = margin.table(mytable,1) /  margin.table(mytable)> as.vector(v) %*% as.integer(names(v))      [,1][1,] 19.88


原创粉丝点击