1부터 100까지의 값을 갖는 100개의 자료로 분위수 계산

num <- 1:100
quantile(num)
##     0%    25%    50%    75%   100% 
##   1.00  25.75  50.50  75.25 100.00
quantile(0:100)
##   0%  25%  50%  75% 100% 
##    0   25   50   75  100
quantile(num, prob=c(0.05,0.1,0.9,0.95))
##    5%   10%   90%   95% 
##  5.95 10.90 90.10 95.05

BMI자료에서 키에 대한 5%, 10%, 25%, 50%, 75%, 90%, 95% 백분위수는

bmi <- read.table("D://KNOU//3-2//RFundamental//bmi.txt",header=TRUE)
quantile(bmi$height,c(0.05,0.10,0.25,0.50,0.75,0.90,0.95))
##    5%   10%   25%   50%   75%   90%   95% 
## 153.0 155.0 158.0 162.0 165.0 168.4 172.2

산술평균과 절삭 평균 - n개의 자료의 중심에 대한 척도로 사용하는 값들로 평균이나 절삭평균을 사용 - 평균은 이상치에 민감하게 반응하므로 이에 대한 보정으로 절삭평균을 사용 mean(x, trim=0, na.rm…..) trim은 절삭평균을 계산할때 절삭할 비율을 설정.

1부터 100가지의 수와 1000이 포함된 101개의 자료에 대해서

x <- c(1:100)
x <- union(x,c(100000,-100))
mean(x)
## [1] 1028.922
mean(x,trim=0.05)
## [1] 50.5

BMI자료에서 여자의 몸무계의 평균과 5%절삭 평균 구하기

mean(bmi[,bmi$gener=="F"])
## Warning in mean.default(bmi[, bmi$gener == "F"]): argument is not numeric
## or logical: returning NA
## [1] NA
mean(bmi[bmi[,5]=="F",2])
## [1] 51.87342
median(bmi[bmi[,5]=="F",2])
## [1] 52
mean(bmi[bmi$gender=="F",]$weight,trim=0.05)
## [1] 51.81944

평균 절삭은 median등과 비교하여 현격한 차이가 있다고 판단할때 적용할 수 있을것 같다. 위의 경우에는 절삭하지 않은 평균과 median과의 차이가 거의 없으므로 굳이 절삭할 필요는 없다.

중앙값(median) 1부터 100가지의 수와 1000이 포함된 101개의 자료의 중앙값

x <- c(1:100,1000)
median(x)
## [1] 51
y <- c(x,NA)
median(y)
## [1] NA
median(y,na.rm=TRUE)
## [1] 51

BMI의 키의 중앙값.

median(bmi$height)
## [1] 162
quantile(bmi$height,probs=0.5)
## 50% 
## 162

분산과 표준편차

sd(bmi$height, na.rm=FALSE) #표준편차
## [1] 5.472746
var(bmi$height, na.rm=FALSE) #분산
## [1] 29.95095
sd(bmi$height, na.rm=FALSE) ^ 2
## [1] 29.95095
sqrt(var(bmi$height, na.rm=FALSE))
## [1] 5.472746

범위및 최대,최소

range(bmi$height) #전체 키의 범위
## [1] 150 180
range(bmi[bmi$gender=='M',]$height) #남자키의 범위
## [1] 160 180
max(bmi$height)
## [1] 180
min(bmi$height)
## [1] 150
IQR(bmi$weight) #4분위수범위 inter quatile range 3q - 1q
## [1] 8
quantile(bmi$weight)
##   0%  25%  50%  75% 100% 
##   40   49   52   57   80

자료의 흩어짐에 대한 측도 상관계수와 공분산 상관계수는 보통 피어슨(Pearson)의 선형상관계수를 말하며 표본에서 얻은 상관 계수는 r로 표시 상관계수는 cor, 공분산은 cov 함수 이용

cov(bmi$height,bmi$weight)
## [1] 25.42062
cor(bmi$height,bmi$weight) #1에 가까울수록 강한 상관관계
## [1] 0.6473976

표준정규분포로부터 100개씩 난수를 얻어 이를 행렬에 저장하고 이의 상관계수를 계산하기

x <- cbind(rnorm(100),rnorm(100))
cor(x)
##            [,1]       [,2]
## [1,] 1.00000000 0.04254957
## [2,] 0.04254957 1.00000000

도수분포표와 교차표 table함수는 매개변수가 한개이면 도수분포표를 둘이상이면 교차표를 출력하는 함수이다.

table(bmi$gender)
## 
##   F   M 
## 158  19
table(bmi$gender, bmi$marriage)
##    
##       N   Y
##   F 126  32
##   M   7  12
table(bmi$gender, bmi$marriage, bmi$religion)
## , ,  = Bu
## 
##    
##      N  Y
##   F 17  1
##   M  1  2
## 
## , ,  = C1
## 
##    
##      N  Y
##   F 34 11
##   M  2  0
## 
## , ,  = C2
## 
##    
##      N  Y
##   F 23 10
##   M  0  8
## 
## , ,  = No
## 
##    
##      N  Y
##   F 52 10
##   M  4  2
table(bmi$gender, bmi$religion, exclude = 'No', dnn=c("성별","종교"))
##     종교
## 성별 Bu C1 C2
##    F 18 45 33
##    M  3  2  8

3차원 이상일 경우에는 ftable(Frequency Table)이 보다 유용하다.

ftable(religion~gender,data=bmi)
##        religion Bu C1 C2 No
## gender                     
## F               18 45 33 62
## M                3  2  8  6
ftable(bmi[,4:6],row.vars = 2)
##        religion Bu    C1    C2    No   
##        marriage  N  Y  N  Y  N  Y  N  Y
## gender                                 
## F               17  1 34 11 23 10 52 10
## M                1  2  2  0  0  8  4  2
ftable(bmi[,4:6],row.vars = "gender")
##        religion Bu    C1    C2    No   
##        marriage  N  Y  N  Y  N  Y  N  Y
## gender                                 
## F               17  1 34 11 23 10 52 10
## M                1  2  2  0  0  8  4  2

상대도수값을 얻고자 할때는 prop.table함수 사용

prop.table(table(bmi$gender,bmi$religion))
##    
##             Bu         C1         C2         No
##   F 0.10169492 0.25423729 0.18644068 0.35028249
##   M 0.01694915 0.01129944 0.04519774 0.03389831
prop.table(table(bmi$gender,bmi$religion),margin = 1) #행별로 합계1로 하는 경우
##    
##            Bu        C1        C2        No
##   F 0.1139241 0.2848101 0.2088608 0.3924051
##   M 0.1578947 0.1052632 0.4210526 0.3157895

table,ftalbe등의 함수는 행/열의 합을 제공하지 않음 addmargins함수로 sum 구할수 있음

addmargins(table(bmi$gender,bmi$religion))
##      
##        Bu  C1  C2  No Sum
##   F    18  45  33  62 158
##   M     3   2   8   6  19
##   Sum  21  47  41  68 177
addmargins(prop.table(table(bmi$gender,bmi$religion)))
##      
##               Bu         C1         C2         No        Sum
##   F   0.10169492 0.25423729 0.18644068 0.35028249 0.89265537
##   M   0.01694915 0.01129944 0.04519774 0.03389831 0.10734463
##   Sum 0.11864407 0.26553672 0.23163842 0.38418079 1.00000000