R中随时间的β(qbeta)变换

时间:2016-08-06 02:09:32

标签: r time-series transformation

我试图在计算实体时应用beta变换。随着时间的推移实现某个目标的相对能力。应用β变换以确保所有不同的数据集被一致地变换,以便当应用一系列权重时,权重有意义地表示数据集的贡献"实体'总分。

随着时间的推移应用β转换的挑战是,即使原始数据不变,它也可能产生较低的转换得分(见下图):

Beta-transformed scores over time

我认为这是由于相对性造成的:即使实体的原始价值没有变化,其他实体也会发生变化。得分可能正在改善,因此即使其原始值不变,β转换也会压低该实体的得分。

我试图用一些简单的数学来解决这个问题:

years=sort(unique(x$year))
codes=unique(x$code)
values=ps=rescored=matrix(0,length(codes),length(years))
for(i in 1:length(x$codes))
{
  j=which(years==x$year[i])
  k=which(codes==x$iso[i])
  values[k,j]=x$value[i]
}
T1values=values[,1]
for(k in 1:length(codes))
{
  for(j in 1:length(years))
  {
    ps[k,j]=(1+sum(T1values<=values[k,j]))/(2+length(isos))
    rescored[k,j]=round(qbeta(ps[k,j],5,2)*100,2)
  }
}

然而,这种方法随着时间的推移过度平滑实体的得分(因此丢失了小的小数差异),并且由于某种原因,我在目标上的这些实体之间存在差距(原始规模为17,转换为100)比例,变换范围的范围是0到100)。

我需要将值尽可能地匹配到&#34; mrya得分&#34; 2015年的最新一年(见sample_data.csv)。 sample_data.csv

任何想法都非常感激!

**编辑**样本输入/输出数据

code  raw value     year  transformed   beta transformed
                          (new method)  (old method)
840  9.534868563    2006    69.62   74.1163453
840  9.566570011    2007    69.62   73.07062613
840  9.568561874    2008    69.62   72.87069707
840  9.575458466    2009    69.62   72.66601396
840  9.618749298    2010    69.62   72.22070745
840  9.618945848    2011    69.62   72.22070745
840  9.622768849    2012    69.62   71.55126994
840  9.623843583    2013    69.62   72.26018915
840  9.623843583    2014    69.62   71.56642954
840  9.623843583    2015    69.62   71.56642954

正如您在上面所看到的,即使原始值逐渐增加,应用qbeta(5,2)变换也会导致某些变换值在时间序列中减少(如图1所示,也在第5列和#中) 34; beta转换(旧方法)。但我的尝试修复(从上面的代码片段)生成一条直线和过度平滑的差异,将不同的原始值转换为相同的分数69.62。我希望这澄清了我的问题!

0 个答案:

没有答案