cor 函数中的不兼容维度错误

Incompatible dimensions error in cor function

我正在尝试编写一个函数来计算因变量和自变量之间的相关性,以便在将数据放入回归模型之前找到数据的完美滞后。我想计算每个季度(我的意思是我正在检查的年份的每个季度)我的训练数据的最佳滞后,然后对每个滞后的结果相关性进行平均。滞后 1 意味着我在 t 中的因变量最好用我在 t-1 中的变量来描述。人们可以认为这基本上是在进行交叉验证。我的代码如下:

Korrelations.Maximierer = function(Aktie, Kategorie){

  Ergebnis = matrix(nrow = 114,ncol =  18)

  for(tmp in 1:18){
    Start.Test=1*tmp
    Ende.Test=13*tmp
    Untersuchungszeitraum = Aktie[Start.Test:Ende.Test]

    for(i in 0:113){
      int.low=96-i+18*tmp
      int.high=108-i+18*tmp

      Ergebnis[i+1,tmp]=mean(abs(cor(Untersuchungszeitraum,Kategorie[int.low:int.high,-1],
      method = "spearman")))
    }
  }  
  return(Ergebnis)
}

我的数据以周为单位,这就是为什么每个季度包含 13 个数据点。此外,我正在检查 4,5 年的数据,因此有 18 个季度。我在因变量的第一个数据点之前最多 113 周获得了自变量的数据。当我 运行 时,我收到以下错误消息:

Error in cor(Untersuchungszeitraum, Kategorie[int.low:int.high, -1],
method = "spearman") : 
incompatible dimensions In addition: There were 50 or more warnings
(use   warnings() to see the first 50) 

输入'warnings()'告诉我标准偏差为零,这也让我很生气。

我 运行 手动第一个样本的代码并且 "Untersuchungszeitraum" 和 "Kategorie[int.low:int.high]" 具有相同的行数,因此相关性应该是可计算的。

手动设置我的 x 和 y 后,基本上只需从我的 skript 中复制粘贴代码并手动设置 tmp = 1 和 i = 0,因此省略 for 循环。我尝试计算生成的数据帧的相关性并得到了我正在寻找的结果。加上标准偏差为零误差。

我不明白为什么这在我手动输入时有效,而在我使用脚本时却无效。另外,对标准偏差的一些了解是零错误会很好。感谢您的帮助!

我认为问题可能是 Start.TestEnde.Test 计算不正确。 Kategorie[int.low:int.high,-1] 将始终是长度为 12 的向量(对于 itmp 的所有值,int.high - int.low = 12),但 Untersuchungszeitraum 的长度将是 Ende.Test - Start.Test = 12 * tmp.这意味着向量在 for 循环的第一次迭代中将具有相同的长度,但之后就不一样了。

我不太明白这段代码应该做什么,但一种可能是你打算做的

Start.test = 1 + tmp
Ende.test = 13 + tmp