试图将数据强制转换为高斯曲线,结果与预期不符

时间:2020-01-22 13:27:50

标签: r statistics

这不是关于曲线拟合的问题。相反,我所拥有的是60个不同地点的集合,我可以从这些地点收集最高,最低和平均温度。我需要能够使用此数据来计算光伏电池的工作温度;但是,对于平均温度,这样做是没有意义的,因为它包括日落之后的值。相反,我首先创建一个“伪”平均温度(这是我们的“伪平均”,totalityoftemperatures_fakemeans),它是最高和最低温度的平均值。在这一点上,我通过减去一个标准偏差(假设6 * sd = max-min)来计算调整后的最低温度,然后最终计算出“调整后”的平均温度,该平均温度是新的最低温度的平均值(假均值-1 * sd)和预先存在的最高温度(因此这是我们的“调整后平均值”)。

真正困扰我的是,这个重新计算的平均值应该高于“假”的平均值;毕竟,它是调整后的最小值与原始最大值的平均值。我也可以将其交叉发布到统计堆栈交换之类的东西,但是我很确定这是当前的编码问题。有没有人可以看一下R中的以下代码?

#The first data sets of maxima and minima are taken from empirical data 

for(i in 1:nrow(totalityofsites))
{
  for(j in 1:12)
  {
    totalityoftemperatures_fakemeans[i,j] = mean(totalityoftemperatures_maxima[i,j], totalityoftemperatures_minima[i,j])
  }
}  

totality_onesigmaDF = abs((1/6)*(totalityoftemperatures_maxima - totalityoftemperatures_minima))
totalityoftemperatures_adjustedminima = totalityoftemperatures_fakemeans - totality_onesigmaDF


for(i in 1:nrow(totalityofsites))
{
  for(j in 1:12)
  {
  totalityoftemperatures_adjustedmeans[i,j] = mean(totalityoftemperatures_adjustedminima[i,j], totalityoftemperatures_maxima[i,j])
  }

}

#The second calculation of the average should be higher than "fake" but that is not the case

1 个答案:

答案 0 :(得分:0)

我认为您的问题出在使用mean函数上。当您这样做时:

mean(totalityoftemperatures_adjustedminima[i,j], totalityoftemperatures_maxima[i,j])

您正在用两个参数调用均值。该函数仅接受一个参数,即数字的向量。如果提供两个数字,它将忽略第二个数字。看:

mean(2, 100)
#[1] 2

如果将这些值连接到一个向量中,则会得到正确的答案:

mean(c(2, 100))
#[1] 51

所以您需要更改

mean(totalityoftemperatures_maxima[i,j], totalityoftemperatures_minima[i,j])

mean(c(totalityoftemperatures_maxima[i,j], totalityoftemperatures_minima[i,j]))

mean(totalityoftemperatures_adjustedminima[i,j], totalityoftemperatures_maxima[i,j])

mean(c(totalityoftemperatures_adjustedminima[i,j], totalityoftemperatures_maxima[i,j]))