2017-02-04 1 views
2

나는 6136 관측과 2 변수와 함께 data set 있습니다. 전체 데이터를 요약 할 때, 두 번째 변수의 quantiles, median, mean 및 max는 때로 두 번째 변수 만 요약 한 결과와 다릅니다. 왜 그런가요? r2evans '의견 @

data <- read.csv("testdata.csv") 

head(data) 
# Group.1  x 
# 1 10/1/12  0 
# 2 10/2/12 126 
# 3 10/3/12 11352 
# 4 10/4/12 12116 
# 5 10/5/12 13294 
# 6 10/6/12 15420 

summary(data) 
# Group.1   x   
# 10/1/12 : 1 Min. : 0 
# 10/10/12: 1 1st Qu.: 6778 
# 10/11/12: 1 Median :10395 
# 10/12/12: 1 Mean : 9354 
# 10/13/12: 1 3rd Qu.:12811 
# 10/14/12: 1 Max. :21194 
# (Other) :55    

summary(data[2]) 
#  x   
# Min. : 0 
# 1st Qu.: 6778 
# Median :10395 
# Mean : 9354 
# 3rd Qu.:12811 
# Max. :21194 

# The following code yield different result: 

summary(data$x) 
# Min. 1st Qu. Median Mean 3rd Qu. Max. 
# 0 6778 10400 9354 12810 21190 
+4

귀하의 전화는 (S3 해상도 이후)'summary.data.frame (data [2])'및'summary.default (data $ x)'와 동일합니다. 함수는 약간 다르게 정의되며 통계도 약간 다르게 표시됩니다. quartiles를 계산하는 것은 수치 벡터의 길이에 따라 "최대 해석"이며, R의 모든 함수가 서로 또는 당신과 동일한 가정을하는 것은 아닙니다. 선호하는 방법을 찾거나 직접 계산하십시오 (자세한 내용은'? quantile'을 읽은 후). – r2evans

답변

1

는 차이가 summary.data.framesummary.default의 차이에 의해 발생되는 것을 정확합니다.

digits의 기본값은 max(3L, getOption("digits") - 3L)입니다. 옵션을 변경하지 않은 경우 4L으로 평가됩니다. 그러나 두 메서드는 결과의 서식을 지정할 때 서로 다른 방식으로 digits 인수를 사용하므로 두 메서드의 출력 차이점이 있습니다. ?summary에서 :

digits : 정수, signif() (summary.default) 또는 format() (summary.data.frame에 대한)로 서식 번호를 사용했다.

q <- append(quantile(data$x), mean(data$x), after = 3L) 
q 
## 0%  25%  50%    75%  100% 
## 0.00 6778.00 10395.00 9354.23 12811.00 21194.00 

summary.default에서 출력이 signif을 사용하여 포맷, 그것은 상당한 digits의 공급 수에 대한 입력의 발사 속도 :

우리가 문제 x의 요약 통계의 벡터를 가지고 말 : summary.data.frame 사용 format를 사용

signif(q, digits = 4L) 
## 0% 25% 50%   75% 100% 
## 0 6778 10400 9354 12810 21190 

하지만 그것은 digits 인수입니다 디스플레이의 유효 자릿수에 관해서 만 sugggestion (?format) 따라서

format(q, digits = 4L) 
##  0%  25%  50%    75% 100% 
## " 0" " 6778" "10395" " 9354" "12811" "21194" 

기본 digits 인수 값 4, summary.default(data$x) 발사 단지 4 개의 유효 숫자에 5 자리 분위수를 사용하는 경우; summary.data.frame(data[2])은 반올 리지 않고 5 자리 Quantile을 표시합니다.

명시 적으로 4보다 큰로서 digits 인수를 제공하는 경우, 당신은 얻을 것이다 동일한 결과 :

df <- data.frame(a = 1e5 + 0:100) 

summary(df$a) 
## Min. 1st Qu. Median Mean 3rd Qu. Max. 
## 100000 100000 100000 100000 100100 100100 

summary(df) 
##  a   
## Min. :100000 
## 1st Qu.:100025 
## Median :100050 
## Mean :100050 
## 3rd Qu.:100075 
## Max. :100100 
: 기본 digits로 두 가지 방법의 차이의 극단적 인 예를 들어

summary(data[2], digits = 5L) 
##  x   
## Min. : 0.0 
## 1st Qu.: 6778.0 
## Median :10395.0 
## Mean : 9354.2 
## 3rd Qu.:12811.0 
## Max. :21194.0 

summary(data$x, digits = 5L) 
## Min. 1st Qu. Median Mean 3rd Qu. Max. 
## 0.0 6778.0 10395.0 9354.2 12811.0 21194.0