2015-01-10 6 views
3

평균을 계산하고 싶습니다.mean()과 mean (aggregate())이 다른 결과를 반환하는 이유는 무엇입니까?

# sample data 
Nr <- c(1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23) 
dph <- c(3.125000, 6.694737, 4.310680, 11.693735, 103.882353, 11.000000, 7.333333, 20.352941, 5.230769, NA, 4.615385, 47.555556, 2.941176, 18.956522, 44.320000, 28.500000, NA, 10.470588, 19.000000, 25.818182, 43.216783, 51.555556, 8.375000, 6.917647, 9.375000, 5.647059, 4.533333, 27.428571, 14.428571, NA, 1.600000, 5.764706, 4.705882, 55.272727, 2.117647, 30.888889, 41.222222, 23.444444, 2.428571, 6.200000, 17.076923, 21.280000, 40.829268, 14.500000, 6.250000, NA, 15.040000, 5.687204, 2.400000, NA, 26.375000, 18.064516, 4.000000, 6.139535, 8.470588, 128.666667, 2.235294, 34.181818, 116.000000, 6.000000, 5.777778, 10.666667, 15.428571, 54.823529, 81.315789, 42.333333) 
dat <- data.frame(cbind(Nr = Nr, dph = dph)) 

# calculate mean directly 
mean(dat$dph, na.rm = TRUE) 
[1] 23.02403 

# aggregate first, then calculate mean 
mean(aggregate(dph ~ Nr, dat, mean, na.rm = T)$dph) 
[1] 22.11743 

# 23.02403 != 22.11743 

하는 이유는 두 개의 서로 다른 결과를 얻을 수 있습니까 : 여기에 샘플 데이터와 코드는? 질문에 대한


설명 :

나는 게시물 기준으로 미리 기준을 비교하는 윌 콕슨 테스트를 수행해야합니다. Pre는 3 회의 측정이며 게시는 16입니다. Wilcoxon 테스트에는 동일한 길이의 벡터 두 개가 필요하므로 aggregate으로 각 환자의 사전 및 사후 평균을 계산하여 동일한 길이의 두 벡터를 만듭니다. 위의 데이터는 사전입니다.

편집 :

환자 NO. 4가 데이터에서 제거되었습니다. 그러나 Nr <- rep(1:22, 3)을 사용하면 동일한 결과가 반환됩니다.

+0

Nr에 4가 있으면 같은 일이 발생합니까? – lawyeR

+0

@lawyeR 예. (나는'Nr <- rep (1:22, 3)'로 시도했다.) 단지 설명하기 : 환자 번호 4가 데이터에서 제거되었다. –

+1

동일한 결과를 얻을 이유가 없습니다. 'Nr <-c (1, 1, 2, 2)'와'dph <-c (1, 2, 3, NA)'를 고려해보십시오. 어떻게 다른 값을 얻을 수 있는지 알아야합니다. 일반적으로 지구 평균은 "평균의 평균"과 다릅니다. – nicola

답변

2

mean(dat$x, na.rm=T) 버전에서는 각 NA이 제거되어 관측 횟수가 1 회로 줄어들었지만 처음 집계 할 경우 10 번째 행 (ID 11)에 NA가 표시됩니다. 제거되었지만 ID 11 인 다른 행에 NA가 없거나 적어도 하나는 포함하지 않기 때문에 각 ID에 대해 집계 후 mean을 계산하는 데 사용하는 관측 수 (고유 ID)는 감소하지 않습니다 NA 당 1 씩. 따라서 IMO의 차이는 두 계산에서 동일해야하는 dph의 합계를 다른 수의 관측치로 나누어 나온 것입니다.

NA 항목을 0으로 변경하고 두 버전으로 평균을 다시 계산하면이를 확인할 수 있습니다.

그러나 일반적으로 각 ID (이 경우 3)에 대해 동일한 수의 관측치가 있기 때문에 일반적으로주의해야합니다. 서로 다르면 다시 다른 결과를 얻게됩니다.

관련 문제