设计协方差矩阵在R中的仿真研究中有效地进行

时间:2014-09-01 13:56:59

标签: r matrix covariance large-data

在我的模拟研究中,我需要为多变量数据提出协方差矩阵。 我的数据:

dataset=data.frame(observation=rep(1:8,2),plot=rep(1:4,each=2),time=rep(1:2,8),treatment=rep(c("A","B","A","B"),each=4),OutputVariable=rep(c("P","Q"),each=8))

此数据集是多变量的,对于每个观察(1:8),都有多个结果。在这种情况下,我们同时观察OutputVariable P和OutputVariable Q的值。请注意,实际输出不在此数据集中,因为我将在稍后阶段生成它们。

所需的协方差矩阵为16x16。其中CovarMat[2,9]表示数据集中第二行(变量P的观察2)和第9行(变量Q的观察1)之间的协方差。

例如,CovarMat [2,9]的值基于以下规则:

  • CovarMat[2,9]=0
  • 如果dataset$plot[2]==dataset$plot[9]CovarMat[2,9]=CovarMat[2,9]+1.5
  • 如果dataset$time[2]==dataset$time[9]CovarMat[2,9]=CovarMat[2,9]+1.5
  • 如果(dataset$plot[2]==dataset$plot[9])&(dataset$time[2]==dataset$time[9])CovarMat[2,9]=CovarMat[2,9]+3
  • 如果abs(dataset$time[2]-dataset$time[9])=1CovarMat[2,9]=CovarMat[2,9]+2

使用For循环很容易(这就是我现在所做的)。但我目前的数据集是13,200行。因此我的CovarMat由174,240,000个细胞组成。因此,我迫切需要一种更有效的方式。

0 个答案:

没有答案