【问题标题】:Scale percentage data to mean of 50%将百分比数据缩放为 50% 的平均值
【发布时间】:2017-04-04 04:12:13
【问题描述】:

我有一个加权平均值为 0.4860247 的数据集。我正在尝试将 0.5 左右的数据标准化。我正在使用scale(),但我的问题是我没有所有数据。相反,我在一列中有总计数,在另一列中有百分比。

data <- data.frame(percent = c(0.455188841201717, 0.461817275747508, 0.464727272727273, 0.466502777777778,  0.472820895522388, 0.475576045627376, 0.489019313304721, 0.490855421686747, 0.491118959107807, 0.506631578947368, 0.526727272727273, 0.541372950819672), 
n = c(233, 301, 198, 360, 201, 1052, 466, 332, 269, 304, 374, 244)
)

如何使用加权数字创建 0.5 左右的比例分布?我需要模拟(rnorm())数据然后运行scale()吗?

编辑:n 将保持不变。我想将percent 调整为正态分布在平均值 0.5 左右。基本上,我的数据已经倾斜到没有 0.5 的平均值。我正在尝试做的是将数据标准化为平均值为 0.5,以便我可以看到一个数字与 0.5 的平均值相比好还是差。

我的数据的当前加权平均值是 0.4860247。我想要的输出是将所有大于加权平均值的数字缩放到 0.5 以上,并将所有小于加权平均值的数字缩放到小于 0.5。

【问题讨论】:

  • 哪个是固定的,n 还是percent?您想更改哪些值来调整平均值?期望的输出是什么?
  • @MrFlick 道歉。我已经在上面编辑了我的问题以澄清。

标签: r normalization


【解决方案1】:
x = 0.5*sum(df$n) - sum(df$percent*df$n) #additional 'percent*n' required
df$pr = (df$percent*df$n)/ sum(df$percent*df$n) #proportion by which 'x' should be split
df$percent_2 = df$percent + df$pr*x/df$n #add portion of 'x' to each 'percent'
sum(df$percent_2*df$n)/sum(df$n) #New weighted mean
#[1] 0.5

数据

df = structure(list(percent = c(0.455188841201717, 0.461817275747508, 
0.464727272727273, 0.466502777777778, 0.472820895522388, 0.475576045627376, 
0.489019313304721, 0.490855421686747, 0.491118959107807, 0.506631578947368, 
0.526727272727273, 0.541372950819672), n = c(233, 301, 198, 360, 
201, 1052, 466, 332, 269, 304, 374, 244)), .Names = c("percent", 
"n"), class = "data.frame", row.names = c(NA, -12L))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多