2017-04-03 1 views
0

가중 평균이 0.4860247 인 데이터 세트가 있습니다. 나는 .5 주변의 데이터를 표준화하려고 시도하고있다. scale()을 사용하고 있지만 내 문제는 모든 데이터가 없다는 것입니다. 대신, 나는 총계가 한 칼럼에 있고 백분율이 다른 칼럼에 있습니다.비율 데이터를 50 %로 조정하십시오.

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입니다. 원하는 출력은 가중 평균보다 큰 모든 수를 .5 이상으로, 가중 평균보다 작은 모든 수를 .5 미만으로 조정하는 것입니다. 고정

+0

의'n' 또는'percent'? 평균을 조정하기 위해 어떤 값을 변경 하시겠습니까? 원하는 출력은 무엇입니까? – MrFlick

+0

@MrFlick 사과. 나는 위의 질문을 명확히하기 위해 편집했다. – medavis6

답변

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)) 
관련 문제