是否有可能转换薪资数据,以便可以输入arcsin(x)?

时间:2013-12-06 04:32:43

标签: r transformation

我有年薪的数据。总结:

  

Min:61915
  中位数:102499
  平均值:107973 Max:218071

我想将arcsin转换应用于此数据。在R中,安装了metafor包,我运行:

transf.arcsin(annsal) 

但是收到以下错误消息:

> transf.arcsin(wages$annsal)
  [1] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
 [21] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
 [41] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
 [61] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
 [81] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
[101] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
[121] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
[141] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
[161] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Warning message:
In asin(sqrt(xi)) : NaNs produced

我知道arcsin(x)的域是(-1,1)。有没有办法让我转换年薪数据,以便可以输入R中的arcsin转换?

1 个答案:

答案 0 :(得分:0)

你不能只进行简单的缩放转换吗?

由于您不希望精确到-1或+1的值,您可以将范围的最大值和最小值偏移适合您的一些小的正数量,例如eps(epsilon)= .0001

salaries <- rnorm(100,0,1)

y <- range(salaries)

eps = .0001

z <- (salaries - (y[1] - eps) ) * 2 / ( (y[2] + eps) - (y[1] - eps)) - 1

z为您提供比例[-1到1]

的数据

或者,如果您准备放下最小值和最大值[根据上述变换将为+1和-1](它们可能也可能不是唯一的最小值和最大值),您可以做更多简单的情况

z <- (salaries - y[1] ) * 2 / ( y[2] - y[1]) - 1