在Stata中生成观察之间的相关表

时间:2018-01-28 04:54:08

标签: stata

这是我以前从未遇到的问题,因此,我甚至不知道从哪里开始。

我有一个不平衡的面板数据集(不同产品在几周内在不同的商店销售),并希望在每个产品组合之间运行销售相关性。但是,要求是仅使用同一商店和周中出现的两种产品的销售价值来计算相关性。也就是说,某些星期或某些商店可能只销售两种产品中的任何一种,所以我们只想忽视这些情况。

我的数据集中的观察数量为400,000,但其中我只销售了50种产品,因此最终相关矩阵为50 * 50 = 2500,具有1250个唯一相关值。这有道理吗?

clear
input str2 product  sales    store week
A 10 1 1 
B 20 1 1   
C 23 1 1 
A 10 2 1 
B 30 2 1 
C 30 2 1 
F 43 2 1 
end

相关表应该是这样的[fyi,而不是相关值我用方括号来说明要使用的值]。请注意,我无法为AF运行相关性,因为只有一个商店/周组合。

     A          B               C
A    1   [10,20; 10,30]   [10,23; 10,30]
B               1         [20,23; 30,30]
C                               1

1 个答案:

答案 0 :(得分:2)

您计算变量对之间的相关性;但是你认为变量对在当前的数据布局中并非如此。所以,你需要一个reshape。该原则由

表示
clear
input str2 product  sales    store week
A 10 1 1 
B 20 1 1   
C 23 1 1 
A 10 2 1 
B 30 2 1 
C 30 2 1 
F 43 2 1 
end

reshape wide sales , i(store week) j(product) string 

rename sales* *

list

     +----------------------------------+
     | store   week    A    B    C    F |
     |----------------------------------|
  1. |     1      1   10   20   23    . |
  2. |     2      1   10   30   30   43 |
     +----------------------------------+

pwcorr A-F

             |        A        B        C        F
-------------+------------------------------------
           A |        . 
           B |        .   1.0000 
           C |        .   1.0000   1.0000 
           F |        .        .        .        . 

结果看起来很奇怪,因为你的玩具示例不会允许。所以A在您的示例中没有变化,并且未定义相关性。 B和C之间的相关性是完美的,因为B和C都有两个不同的数据点。

另一个问题是50 x 50相关矩阵是不实用的。如何获得更友好的输出取决于您想要使用它。