기술통계¶
통계로 개념 이해하기¶
기술통계¶
- 데이터를 수학으로 기술하는 것
- 수치로 특징을 말하는 이유는 정확하기 때문
- 어떤 사실을 말할 때, 높은 설득력
평균(mean)¶
- 모집단 vs 표본
- 모평균 vs 표본평균
- 모분산 vs 표본분산
모표준편차 vs 표본표준편차
기술통계에서 말하는 값들은 모두 표본에 해당하는 값
아웃라이어(outlier)¶
- 평균을 크게 변하게 만드는 값
- 아웃라이어를 찾기 위한 그래프 boxplot()
- 무조건 제거 대상이 아닌 1차적 분석대상
- 왜 발생했는지와 데이터에 어떤 영향을 미치는지 등 파악
중앙값(median)¶
- outlier에 의해 데이터 대표값(평균 등)이 많이 변하는 점 보완
범위¶
- 수치형 연속변수에서 최소값과 최대값 사이
- 범위는 특별한 의미를 가지는 경우가 별로 없음
- 아웃라이어 등에 의해 범위가 커질 수 있음 -> 사분위범위 사용
사분위범위(IQR, Interquartile Range)¶
- 데이터를 25%, 50%, 75%, 100% 로 구분한 것 중 25%~75% 값
- 값은 중앙값으로 구함
산포도 : 얼마나 퍼져 있는가?¶
분산과 표준편차¶
편차¶
- 자료값들이 특정값으로부터 떨어진 정도를 나타내는 수치
- 각 자료들이 평균으로부터 얼마나 떨어져있는지 차이를 보는 것
표준편차¶
- 통계량을 간단히 설정하기 위해 편차들의 대표값을 하나 설정
- 그 편차들의 대표값을 설정하고 이를 표준(standard)로 이용
- 데이터들이 평균으로부터 떨어진 거리의 평균값
구하는 방법¶
- 각각의 자료값에서 특정값을 뺀 값의 절대값을 모두 더한 뒤 이의 평균을 구하는 방법 => 평균편차
- 각각의 자료값에서 특정값을 뺀 값의 제곱을 모두 더한 뒤 이의 평균을 구하는 방법 => 분산 => 표준편차
대푯값¶
- 대푯값은 편차를 최소로 만드는 값
- 평균편차 대푯값 => 중앙값
- 표준편차 대푯값 => 평균
산포도¶
- 자료값들이 대푯값으로부터 떨어진 정도
편차의 정의인 '자료값들이 특정값으로부터 떨어진 정도'에서 특정값 대신 대푯값을 넣으면 그것이 산포도
참고 편차들의 대표값으로 평균편차를 이용하지 않는 이유 편차란 각 자료들이 평균으로부터 얼마나 떨어져있는지 그 거리를 보기 위한 것 따라서 거리공식에 대입하여 자료값들이 평균값과 얼마나 떨어져있는지 평균적인 거리를 보아야 함 그래서 피타고라스 정리를 응용하여 만들어진 유클리드 거리(Euclidean distance)공식에 대입하여 평균낸 우리가 흔히 아는 표준편차 공식을 쓰는 것
표준화¶
- 각 가다른 집단의 평균과 표준편차를 비교하기 위해 평균을 0으로 이동시키고 표준편차로 나주어 준다
z 점수란?¶
- 자료가 평균으로부터 표준편차의 몇 배만큼 떨어져 있는지를 나타냄
변동계수¶
- 어떤 변량이 평균을 중심으로 얼마나 흩어져 분포하고 있느냐를 보여준다 / 얼마나 다른지 비율만 확인
- 변동계수(V) = 표본표준편차(S) / 표본평균(x)
ex1)¶
- 몸무게 평균 63 / 표준편차 20 => 20 / 63 = 0.317
- 키 평균 175 / 표준편차 35 => 35 / 175 = 0.2
- 몸무게의 분포가 더 넗게 퍼져 있음
ex2)¶
- A기업 평균연봉 3500 / 표준편차 250 => 250 / 3500 = 0.0714
- B기업 평균연봉 4200 / 표준편차 180 => 180 / 4200 = 0.0428
- A기업의 연봉이 더 넗게 퍼져 있음
공분산¶
- 변수가 2개일때 분산(공=함께)
- X가 커지면 Y도 커지거나 혹은 작아지거나 아니면 별 상관 없거나 등을 나타내어 주는 것
- Cov(X,Y)
- Cov(X, Y) > 0 X가 증가 할 때 Y도 증가
- Cov(X, Y) < 0 X가 증가 할 때 Y는 감소
- Cov(X, Y) = 0 공분산이 0이라면 두 변수간에는 아무런 선형관계가 없으며 두 변수는 서로 독립적인 관계
- 두 변수가 독립적이라면 공분산은 0이 되지만, 공분산이 0이라고 해서 항상 독립적이라고 할 수 없다.
상관계수(Correlation)¶
- 상관계수의 절대값은 1을 넘을 수 없다.
- 확률변수 X, Y가 독립이라면 상관계수는 0이다.
- X와 Y가 선형적 관계라면 상관계수는 1 혹은 -1이다.
- 양의 선형관계면 1, 음의 선형관계면 -1
독립사건¶
- 사건 A가 사건 B에 영향을 주지 않는 상태(조건부 확률)
- 주사위 A 가 1 나올 때, 동전 B (앞면) 나올 확률?
배반사건¶
- 사건 A와 사건B가 동시에 일어날 수 없는 사건
- 동전을 던저 앞면(T)이 나오면 뒷면이 나올 수 없다
R로 기술통계 구하기¶
In [1]:
# 데이터 로드
df <- read.csv('R-ggagi-data/example_studentlist.csv')
In [2]:
head(df)
mean() : 평균¶
In [4]:
#평균 구하기 -NA 제거 후
mean(df$height, na.rm=T)
median() : 중앙값¶
In [7]:
median(df$height, na.rm=T)
range() : 범위¶
In [8]:
range(df$height, na.rm = T)
quantile() : 사분위 구하기¶
In [9]:
quantile(df$height, na.rm = T)
IQR() : IQR 구하기¶
In [10]:
IQR(df$height, na.rm = T)
In [11]:
# 참고) IQR 구하는 알고리즘은 여러개
IQR(df$height, na.rm = T, type = 7) # default
IQR(df$height, na.rm = T, type = 5)
IQR(df$height, na.rm = T, type = 3)
summary() : 기술통계 요약¶
- 평균, 중앙값, Q1, Q3 한번에 보기
In [12]:
summary(df$height, na.rm=T)
boxplot() : 이상치 확인¶
- NA값 기본으로 제거함
In [13]:
boxplot(df$height)
cor() : 상관계수¶
In [16]:
cor(df$height, df$weight)
In [17]:
# cor.test() : 좀 더 자세한 상관관계
# 신뢰구간, p값 등이 나옴
cor.test(df$height, df$weight)
In [18]:
# 3개 변수 상관 계수
cor(df[,c(3,7,8)])
In [22]:
# 여러 변수 사용 시의 결측치
df2 <- df
df2[2,7] <- NA
df2[4,8] <- NA
In [23]:
cor(df2$height, df2$weight)
In [24]:
# na.rm = T 사용 못 함
cor(df2$height, df2$weight, na.rm = T)
In [25]:
# use = 'complete.obs' == na.rm == T : 모든 결측치 제거
cor(df2$height, df2$weight, use = 'complete.obs')
In [27]:
# use = 'pairwise.complete.obs'
# 상관계수를 만든 Peason 방식. 그 벡터만 뺌
cor(df2$height, df2$weight, use='pairwise.complete.obs')
In [31]:
# use = 'everything' == na.rm == F : NA 값 포함해서 처리
cor(df2$height, df2$weight, use = 'everything')
In [33]:
# use = 'all.obs'
# 계산 자체를 안 함
cor(df2$height, df2$weight, use = 'all.obs')
var() : 분산¶
In [34]:
var(df$height, na.rm=T)
In [35]:
var(df$height, df$weight, na.rm = T)
cov() : 공분산¶
In [36]:
cov(df$height, df$weight, use = 'complete.obs')
In [37]:
cov(df[,c(3,7,8)], use = 'complete.obs')
sd() : 표준편차¶
In [38]:
sd(df$height, na.rm = T)
scale() : 표준정규화¶
In [40]:
scale(df$height)
In [42]:
# 표준화
df_scale <- data.frame(df$height,
scale(df$height),
z_socre=(df$height-mean(df$height)) / sd(df$height, na.rm = T))
df_scale
In [43]:
# 변동계수 - height
sd(df$height) / mean(df$height)
In [44]:
# 변동계수 - weight (height 보다 더 많이 분산되어 있음)
sd(df$weight) / mean(df$weight)
In [ ]:
'R' 카테고리의 다른 글
[R] 데이터 시각화 (0) | 2020.07.08 |
---|---|
[R] 기술통계 - 실전예제 (0) | 2020.07.08 |
[R] 데이터 개념 이해하기 (2-2) (0) | 2020.07.08 |
[R] 데이터 개념 이해하기(2) (0) | 2020.07.03 |
[R] 필수 패키지 설치 및 외부 문서 읽어오기 (0) | 2020.07.02 |
댓글