R语言:求二维变量数学期望
生活随笔
收集整理的这篇文章主要介绍了
R语言:求二维变量数学期望
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
想做一个二维变量数学期望实验, 查看若干资料终于找到方法
先看这篇文章熟悉一下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)) > Aa b 1 22 14 2 21 7 3 20 11 4 20 10 5 12 13 6 17 15 7 15 9 8 3 8 9 14 12 10 3 9
如何理解这个数据:
可以这样来, 就是说我拿了一个零件它的长是A,宽是B, 我在a, b 填入这些数据, 我总共查看了10个零件, 就得到上面这些数据
这样这批零件矩形的长服从正态分布 均值是20, 方差是9, 而宽服从泊松分布 lambda是 10 (我们对正态分布强行取整,编译实验)
构造频率表
用 mytable <-table(A[[1]],A[[2]]) 直接得到
> mytable <-table(A[[1]],A[[2]]) > mytable7 8 9 10 11 12 13 14 153 0 1 1 0 0 0 0 0 012 0 0 0 0 0 0 1 0 014 0 0 0 0 0 1 0 0 015 0 0 1 0 0 0 0 0 017 0 0 0 0 0 0 0 0 120 0 0 0 1 1 0 0 0 021 1 0 0 0 0 0 0 0 022 0 0 0 0 0 0 0 1 0
如何理解:
二维随机变量 X,Y 可能值构成矩阵中所有的点, 值表示样本的出现次数
求列的边沿概率密度
v = margin.table(mytable,1) / margin.table(mytable)
求数学期望
按照定义求, 先分离两个向量
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
总结
以上是生活随笔为你收集整理的R语言:求二维变量数学期望的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 工商信用卡积分多久清零
- 下一篇: Latex \section 使用中文