加载中…
个人资料
研究僧一群
研究僧一群
  • 博客等级:
  • 博客积分:0
  • 博客访问:363,202
  • 关注人气:147
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

方差var、协方差cov、协方差矩阵(浅谈)-(二)_函数var

(2012-05-06 16:57:13)
标签:

方差

matlab

var

杂谈

分类: matlab

    转载请注明:http://blog.sina.com.cn/s/blog_9e67285801010twg.html

    看完了三个概念之后,我们对三个概念有了一定了解(最起码公式要好好看看吧方差var、协方差cov、协方差矩阵(浅谈)-(二)_函数var

 

    下面,我们来进入正题,说说matlab中的方差函数var 还有 协方差函数cov ,对于这两个函数,当然我们可以通过 matlab中help两下解决,但无奈对于英语是心有余而力不足方差var、协方差cov、协方差矩阵(浅谈)-(二)_函数var,假如看官自认为英语还不错的话,你可以去help matlab去了。

    好了,忠诚的小鸟们,开始上课:

    这节咱们讲的是matlab中的方差函数var的用法及具体分析 , var 是用来求方差的,但是首先我们应该清楚的区分两个概念,即方差样本方差的无偏估计,简要来说(你要是不想简要,详细细内容可以看上一篇方差var、协方差cov、协方差矩阵(浅谈)-(二)_函数var)就是,方差公式中分母上是N,而样本方差无偏估计公式中分母上是N-1 (N为样本个数)。

   

    OK!正题!

函数名称: var

 

函数功能:求解方差

 

函数用法:var(X)   %与var(X,0)相同

          var(X,W)

          var(X,W,dim)

 

注:var(X,W)  % W可以取0或1,取0求样本方差的无偏估计值(除以N-1;对应取1求得的是方差(除以N), W也可以是向量,但必须与X中的第一个维度数相同,即length(W)= size(X,1)          
  所以还存在:  var(X ,0 ,dim) % 除以N dim =1 对每列操作  dim = 2 对每行操作

                var(X ,1 ,dim) % 除以N-1 dim =1 对每列操作  dim = 2 对每行操作

   

    var(X,W,dim)   % 关于W取向量时,把W看做X中观察值发生的次数(或者说概率也行)

 

下面详细介绍秘籍:

.........................................................
对于X是向量时,把向量中每个元素看做一个样本
var(X)或者var(X,0)函数输出这个向量中元素的样本方差的无偏估计值,var(X,1)输出的是样本方差

例1:

>> a = [1 6 1 4];
>> aa = var(a)

aa =

     6

>> a_var = var(a,1)

a_var =

    4.5000

>> (sum((a-mean(a)).^2))/(length(a))

ans =

    4.5000


............................................................

对于X是矩阵时

把每行看做一个观察值,每列看做一个变量,函数输出一个行向量,每个元素计算的是该列的方差

例2:

>> X= [1 6 6;4 2 5;7 2 3]

X =

           6
           5
           3

>> XX=var(X)

XX =

    9.0000    5.3333    2.3333

>>  (sum((X-repmat(mean(X),3,1)).^2))/(size(X,1)-1)  %验证

ans =

    9.0000    5.3333    2.3333

>> X_var = var(X,1)

X_var =

    6.0000    3.5556    1.5556
>> (sum((X-repmat(mean(X),3,1)).^2))/(size(X,1))  %验证

ans =

    6.0000    3.5556    1.5556
——————————————————————————————
对于var(X ,0 ,dim) 或者 var(X ,1 ,dim) 前面已说 0 对应 除以N-1; 1对应除以N; dim 指维度信息,默认为1,dim =1 就指对每列操作; dim =2 就指对每行操作。

 

下面以 var(X ,0 ,dim) 为例进行试验验证:

参考结果:默认为1情况↑(往上看)

>> var(X ,0 ,2)

ans =

    8.3333
    2.3333
    7.0000

>> Y = X';
>> var(Y)

ans =

    8.3333    2.3333    7.0000  (一样吧)


...............................................................

对于 var(X,W)、var(X,W,dim) 中W为向量的情况:

把W看做X中对应观察值发生的次数(或者说概率也行)处理,为了清除,现粘贴matlab部分源代码(笔者好心已加注释)如下:

function y = var(x,w,dim)


  The weighted variance for a vector X is defined as
%
     VAR(X,W) = SUM(W.*RESID.*CONJ(RESID)) / SUM(W)
%
  where now RESID is computed using a weighted mean.

    wresize = ones(1,max(ndims(x),dim)); wresize(dim) = n;
    w = reshape(w ./ sum(w), wresize);                     

      % w 看做是x中每个观察值的出现次数,这样w ./ sum(w)即使每个观察样本出现的概率,
    x0 = bsxfun(@times, w, x);                             

      %根据这个概率权重求出期望值或者平均值sum(x0, dim)
    x = bsxfun(@minus, x, sum(x0, dim));                   

      %where now RESID is computed using a weighted mean. 这儿就是那个RESID
    y = sum(bsxfun(@times, w, abs(x).^2), dim);            

逐行验证:

>> clear
>> x= [1 6 6;4 2 5;7 2 3]

x =

           6
           5
           3

>> w = [1 2 3];
>> dim = 1 ;
>> n = size(x ,dim)

n =

     3

>> wresize = ones(1,max(ndims(x),dim))

wresize =

        1

>> wresize(dim) = n

wresize =

        1

>> w = reshape(w ./ sum(w), wresize)

w =

    0.1667
    0.3333
    0.5000

>> x0 = bsxfun(@times, w, x)

x0 =

    0.1667    1.0000    1.0000
    1.3333    0.6667    1.6667
    3.5000    1.0000    1.5000

>> x = bsxfun(@minus, x, sum(x0, dim));
>>  y = sum(bsxfun(@times, w, abs(x).^2), dim)

y =

    5.0000    2.2222    1.4722

>> var (x,w)  %验证下成果

ans =

    5.0000    2.2222    1.4722

你要是还感觉晕的话(方差var、协方差cov、协方差矩阵(浅谈)-(二)_函数var),下面以第一列为例说明W作用

>> X= [1 6 6;4 2 5;7 2 3];
>> a = X(:,1);                 %取出第一列
>> b = w ./ sum(w);            %求出概率矩阵
>> a0=a.*b;                   
>> a1=sum(a0);                 %求出第一列在W概率加权下的平均值
>> a2=a -a1;
>> c = w.*(a2.^2)              %W看做是每个观察值的出现次数,求出在此加权下的方差
>> sum(c)

ans =

     5

注意: 需要注意的是,这种情况下求出的是样本的统计方差(也就是除以N的那种,因为式中w ./ sum(w)),并非样本方差无偏估计值

当然对于var(X,W,dim)中dim=1(对每列求方差)dim=2(对每行求方差)也可以进行验证,由于方式基本与之前的相同,在此不再赘述

                              

 二师兄,快到了!                

         

            

               

                   

                      

                        
  

 ................................................................................


 

 

 

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有