기술 통계학(descriptive statistics)는 측정이나 실험에서 수집한 자료의 정리, 표현, 요약, 해석 등을 통해 자료의 특성을 규명하는 통계적 방법이다.1
![]() |
---|
잘못된 기술통계학 |
나이 | 성별 | 수학 | 영어 |
---|---|---|---|
19 | M | 56 | 76 |
25 | M | 74 | 63 |
19 | F | 79 | 93 |
24 | F | 69 | 99 |
26 | M | 68 | 98 |
20 | F | 88 | 65 |
24 | F | 94 | 74 |
25 | M | 54 | 71 |
19 | F | 53 | 82 |
25 | M | 66 | 75 |
gender <- c("M",'M','F','F','M','F','F','M','F','M')
math <- c(56, 74, 79, 69, 68, 88, 94, 54, 53, 66)
gender
벡터는 범주형 자료이기 때문에, factor()
함수를 사용하여 범주형 요인 변수로 변형하여 사용하자.gender
벡터에 factor()
함수를 사용하게 되면 gender
벡터는 M
, F
의 두 가지 값을 갖는 범주형 자료가 된다.hist()
함수를 이용해 그릴 수 있다.math
변수의 히스토그램은 다음과 같이 그릴 수 있다.hist()
함수에서 freq
, main
매개변수를 통해 조정할 수 있다.math
변수의 밀도를 y축으로 하는 히스토그램을 그리는 코드이다.help(함수명)
또는 ?함수명
을 입력하면 된다.stem()
함수로 그릴 수 있다.math
변수의 줄기-잎 그림은 다음과 같이 그릴 수 있다.##
## The decimal point is 1 digit(s) to the right of the |
##
## 5 | 346
## 6 | 689
## 7 | 49
## 8 | 8
## 9 | 4
boxplot()
함수로 그릴 수 있다.math
변수의 상자그림은 다음과 같이 그릴 수 있다.table()
함수를 통해 범주형 자료의 분할표를 그릴 수 있다.gender
변수의 분할표는 다음과 같이 그릴 수 있다.## gender
## F M
## 5 5
mean()
, median()
함수를 이용해 계산할 수 있다.math
변수의 평균과 중앙값은 다음과 같이 계산할 수 있다.## [1] 70.1
## [1] 68.5
함수 | 기능 |
---|---|
mean | 평균 |
sd | (표본) 표준편차 |
var | (표본) 분산 |
median | 중앙값 |
quantile | 분위수 |
sum | 합 |
min | 최솟값 |
max | 최댓값 |
## [1] 70.1
## [1] 13.97975
## [1] 68.5
## [1] 701
## [1] 94
fivenum()
를 이용할 수 있고 summary()
는 5가지 요약 수치와 평균을 함께 계산해준다.## [1] 53.0 56.0 68.5 79.0 94.0
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 53.00 58.50 68.50 70.10 77.75 94.00
## [1] 53.0 56.0 68.5 79.0 94.0
age
, eng
에 저장하자.plot()
함수를 이용하면 산점도를 그릴 수 있다.plot()
함수에도 다양한 매개변수가 있다.매개변수 | 의미 |
---|---|
x | x축 변수 |
y | y축 변수 |
main | 그래프 제목 |
xlim | x축 좌표의 범위 |
ylim | y축 좌표의 범위 |
xlab | x축 제목 |
ylab | y축 제목 |
type |
p : 관측치를 점으로 표현 (기본값) l : 관측치를 선으로 이어서 표현 c : 관측치를 점선으로 그려서 표현 n : 관측치를 나타내지 않음 |
par(family="NanumGothic") # only for mac user
plot(x=age,y=eng,main='나이와 영어 점수', xlab='나이', ylab='영어 점수')
cor()
함수를 통해 계산할 수 있다.## [1] 0.01271089
\[ r_{xy} = \frac{cov(x,y)}{sd(x) sd(y)} \]
cov
이다.## [1] 0.01271089
# directly
(sum(age*eng)-length(age)*mean(age)*mean(eng)) /
(sqrt(sum((age-mean(age))^2)*sum((eng-mean(eng))^2)))
## [1] 0.01271089
iris
자료가 있다.iris
는 통계학자 Fisher가 소개한 데이터로, 붓꽃의 3가지 종 setosa, versicolor, virginica에 대해 꽃받침(sepal)과 꽃잎(petal)의 길이와 너비를 정리한 것이다.iris
데이터의 성분은 다음으로 이루어져있다.열 | 의미 | 자료형 |
---|---|---|
Sepal.Length | 꽃받침의 길이 | 숫자형 |
Sepal.Width | 꽃받침의 너비 | 숫자형 |
Petal.Length | 꽃잎의 길이 | 숫자형 |
Petal.Width | 꽃잎의 너비 | 숫자형 |
Species | 붓꽃의 종 | 범주형 |
iris
데이터가 저장되어 있기 때문에, 바로 데이터를 다룰 수 있다.## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
iris.txt
자료를 직접 다운로드 받아 read.table()
함수를 이용해 불러와보자.iris.txt
를 다운로드 받자.header=T
를 사용한다.iris.txt
파일을 R에 불러오고 iris_data
에 저장하자.## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
$변수명
을 사용한다.iris
데이터의 첫 번째 열인 Sepal.Length
변수를 사용하기 위해서는 iris_data$Sepal.Length
를 입력한다## [1] 5.1 4.9 4.7 4.6 5.0 5.4 4.6 5.0 4.4 4.9 5.4 4.8 4.8 4.3 5.8 5.7 5.4
## [18] 5.1 5.7 5.1 5.4 5.1 4.6 5.1 4.8 5.0 5.0 5.2 5.2 4.7 4.8 5.4 5.2 5.5
## [35] 4.9 5.0 5.5 4.9 4.4 5.1 5.0 4.5 4.4 5.0 5.1 4.8 5.1 4.6 5.3 5.0 7.0
## [52] 6.4 6.9 5.5 6.5 5.7 6.3 4.9 6.6 5.2 5.0 5.9 6.0 6.1 5.6 6.7 5.6 5.8
## [69] 6.2 5.6 5.9 6.1 6.3 6.1 6.4 6.6 6.8 6.7 6.0 5.7 5.5 5.5 5.8 6.0 5.4
## [86] 6.0 6.7 6.3 5.6 5.5 5.5 6.1 5.8 5.0 5.6 5.7 5.7 6.2 5.1 5.7 6.3 5.8
## [103] 7.1 6.3 6.5 7.6 4.9 7.3 6.7 7.2 6.5 6.4 6.8 5.7 5.8 6.4 6.5 7.7 7.7
## [120] 6.0 6.9 5.6 7.7 6.3 6.7 7.2 6.2 6.1 6.4 7.2 7.4 7.9 6.4 6.3 6.1 7.7
## [137] 6.3 6.4 6.0 6.9 6.7 6.9 5.8 6.8 6.7 6.7 6.3 6.5 6.2 5.9
Species
변수의 분할표를 다음과 같이 출력할 수 있다.##
## setosa versicolor virginica
## 50 50 50
## [1] 3.758
plot(iris_data$Petal.Length,iris_data$Petal.Width,
main='length and width of Petals',
xlab='length', ylab='width')
## [1] 0.9628654
## genhlth exerany hlthplan smoke100 height weight wtdesire age gender
## 1 good 0 1 0 70 175 175 77 m
## 2 good 0 1 1 64 125 115 33 f
## 3 good 1 1 1 60 105 105 49 f
## 4 good 1 1 0 66 132 124 42 f
## 5 very good 0 1 0 61 150 130 55 f
## 6 very good 1 1 0 64 114 114 55 f
head()
함수는 data frame의 일부분을 출력하는 함수라는 것을 수업시간에 언급했습니다.cdc
를 이용해서 푸셔야 합니다.genhlth
4 변수의 분할표를 작성하고, 이를 genhealth_table
변수에 저장하여라.weight
변수의 5가지 요약 수치를 계산하고, 이를 weight_summary
변수에 저장하여라.
height
변수와 weight
변수의 산점도를 그려보아라. 이때, x축이 height
, y축이 weight
가 오게 하고, 산점도의 제목은 height and weight로 하여라.
height
변수와 weight
변수의 상관계수를 계산하고, 이를 corr_hw
변수에 저장하여라.
조원들의 이름을 name
변수에 저장하여라.
조원들의 성별을 gender
변수에 저장하여라. (M or F)
조원들이 스스로 받을 것이라 생각하는 학점을 p_grade
변수에 저장하여라. (A+, A0 등)
조원들이 스스로 받기를 희망하는 학점을 w_grade
변수에 저장하여라. (A+, A0 등)
조원들의 학번을 숫자 형태로 number
변수에 저장하여라. (15, 18 등)