코딩하는 수학과생 :: 코딩하는 수학과생


반응형

사분위수를 구해봤으니 이번엔 분위수를 구해보겠습니다.

n-분위수는 자료들을 n등분을 한 것을 말합니다. 말 그대로 4-분위수는 4등분한 값을 말합니다.

그러므로 작은 범위인 사분위수를 먼저 이해한다면 분위수를 더 쉽게 이해할 수 있습니다.

사분위수2020/03/06 - [R] - R / Rstudio 사분위수 / 분위수를 구해보자(사분위수 편)

 

R / Rstudio 사분위수 / 분위수를 구해보자(사분위수 편)

이번에는 구해볼것은 사분위수입니다~~ 사분위수를 처음 봤을때는 헷갈리는게 너무 많지만 의미를 잘 이해하고 제가 정한 메뉴얼대로 구하는 연습을 하다보니까 어느샌가 조금 친근하게 느껴지더라구요 ㅋ.ㅋ 데이..

dooooh.tistory.com

 

-------------------------------------------------------------------

 

n-분위수란 오름차순 정렬되어 있는 자료를 n 등분한 자료를 말합니다.

 

 

2-분위수 = median

2분위수는 주어진 자료를 2 등분합니다. 또한 2분위수는 중앙값(median)이라고도 부릅니다.

 

 

4-분위수 = quartiles

4분위수는 주어진 자료를 4개의 그룹으로 분리시킵니다. 또한 사분위수(quartiles)라고도 부릅니다.

 

10분위수도 마찬가지로 자료를 10등분 하며 deciles라고 부릅니다.

 

또한 백분위수(percentiles)라는 것이 존재하는데 이는 자료를 100등분 하는 것을 말합니다. 

 

-------------------------------------------------------------------

 

이제 분위수의 개념을 알았으니 R을 이용하여 구해보도록 하겠습니다.

 

R에서 분위수를 구하는 함수는 quantile(x, y) 함수입니다.

x는 자료, y는 0~1 사이의 값 이 들어갑니다.

quantile(data, 0.5)는 중앙값을 구해주고

quantile(data, 0.25)는 제1 사분위수를 구해줍니다.

 

마찬가지로 quantile(data, 0.99)는 100등분을 하는 99번째 값을 구해줍니다.

 

-------------------------------------------------------------------

 

시작으로 R을 이용하여 10분위수(deciles)를 구하는 방법을 알아보겠습니다.

 

10분위수도 마찬가지로 quantile 함수만 알고 있다면 누구나 쉽게 구할 수 있습니다.

 

 

위의 자료의 20%의 자료가 존재하는 부분이  6  이고 30%의 자료가 존재하는 곳이  10.7  임을 알 수 있습니다.

 

하지만 quantile 함수는 분위수의 개념과 약간 다르다고 느낄수도 있습니다. 분위수는 자료를 n등분 하는거지만 quantile 함수는 자료를 2:8  3:7로 나눈 값을 보여준 것입니다.

 

10분위수를 한번에 다 구하는 방법도 있습니다.

quantile(x, y)에서 y 값에 c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9) 값을 넣어주는 것입니다.

4분위수라 하면 y값에 c(0.25, 0.5, 0.75) 값을 넣어주면 사분위수들이 다 나오게 됩니다.

 

 

위와같이 함수에 이러한 값을 넣어줌으로써 모든 10분위수들을 다 구할 수 있습니다.

 

-------------------------------------------------------------------

 

위 자료를 다시한번 예를들어 27백분위수를 구해보겠습니다.

 

 

여기서 27백분위수는  10.13  이 나왔습니다.

 

그렇다면  10 27백분위수보다 높을까요 낮을까요?

 

정답은 "낮다"입니다. 

 

이해를 돕기위해 26백분위수도 구해보겠습니다.

 

 

26백분위수는  9.76  이 나왔습니다. 이 말은 10이라는 값은 26백분위수27백분위수 사이에 존재한다는 것입니다.

 

또한 분위수는 우선적으로 오름차순 정렬을 해준 뒤 등분하는 것이기 때문에  10  은  10.13  보다 아래에 있다고 볼 수 있습니다.

 

-------------------------------------------------------------------

 

 기본적인 분위수에 대해 알아봤습니다. 마지막으로 요약정리를 해보겠습니다.

 

1) 분위수는 등분을 하는 것이기 때문에 Q1, Q2, Q3 세 개로 쪼개면 4-분위수 인것처럼

n개를 기준으로 쪼개게 되면 n+1분위수가 되는 것입니다. 

 

2) 2분위수는 median

4분위수는 quartiles

10분위수는 deciles

100분위수는 percentiles라고 부릅니다.

 

3) 사분위수는 자료를 4개의 그룹으로 백분위수는 자료를 100개의 그룹으로 나누는 것입니다.

 

-------------------------------------------------------------------

반응형
Posted by dooooh
,
반응형

이번에는 구해볼것은 사분위수입니다~~ 사분위수를 처음 봤을때는 헷갈리는게 너무 많지만 의미를 잘  이해하고 제가 정한 메뉴얼대로 구하는 연습을 하다보니까 어느샌가 조금 친근하게 느껴지더라구요

ㅋ.ㅋ

 

데이터의 개수가 적은 경우에는 적은 계산으로 구할 수 있지만 개수가 많아지면 손계산으로는 좀... 그렇기 때문에 R을 이용해서 구해보겠습니다!

 

사분위수란 데이터를 4등분 해주는 수들을 말합니다.

 

Q1, Q2, Q3, Q4로 나타내고 Q2는 좌우로 데이터가 50%씩 존재하는 중위수와 같은 의미를 가집니다.

 

제1 사분위수(Q1)

제2 사분위수(Q2)

제3 사분위수(Q3)

제4 사분위수(Q4)

Q1아래 25% 데이터가 존재

Q2아래 50% 데이터가 존재

Q3아래 75% 데이터가 존재

Q4아래 100% 데이터가 존재

 

----------------------------------------------------------------------------------------------------------------

 

그러면 이제 사분위수의 의미를 알았으니 한번 구해보겠습니다.

 

사분위수를 구하는 방법입니다.

 

step1) 데이터들을 오름차순 정렬시킨다.

 

step2) 중앙값을 찾는다.

 

step3) 중앙값을 기준으로 좌, 우의 데이터의 중앙값들을 찾는다.

 

이제 예를 들어보겠습니다.

 

60, 15, 10, 3, -4, 3, -30

 

이런 홀수개 데이터가 있을때 사분위수를 구해봅시다.

 

1) 오름차순 정렬

 

-30, -4, 3, 3, 10, 15, 60

 

2) 제2 사분위수 = 중앙값

3을 기준으로 좌우로 데이터가 3개씩 존재하므로 중앙값은 3이 됩니다.

∴ Q2 = 3 

 

3) 좌,우 데이터의 중앙값

 

|| -30, -4, 3 || 10, 15, 60 ||

 

좌측 데이터의 중앙값은  -4  우측 데이터의 중앙값은  15  가 됩니다.

 

∴ Q1 = -4, Q3 = 15

 

----------------------------------------------------------------------------------------------------------------

 

만약 데이터의 개수가 짝수인 경우에는 어떤 값을 제2 사분위수로 봐야할까요?

 

-30, -4, 3, 10, 15, 60

 

이러한 경우에는 중앙값을 구했던 것과 같이 가운데 두 수의 평균제2 사분위수로 합니다.

 

Q2 = (3 + 10) / 2 =  6.5 

 

중위수를 공부했기 때문에 Q2를 구하는 과정을 바로 이해가 됩니다. 그렇다면 Q1Q3는 어떻게 구할까요?

조금 헷갈릴 수 있지만 의미를 잘 이해하고 위의 step을 잘 따라가다보면 쉽게 구할 수 있습니다.

 

Q1은 중앙값을 기준으로 좌측데이터의 중앙값입니다. 

 

Q2가  6.5  이므로  6.5 왼쪽의 데이터들을 보면

 

-30, -4, 3

 

입니다. 여기서의 중앙값이므로  Q1 = -4  임을 알 수 있습니다.

#당연히 또 왼쪽 데이터가 짝수인 경우 가운데값들의 평균을 내주면 되겠쥬? :)

 

마찬가지 방법으로  Q3 = 15  임을 알 수 있습니다.

 

=====

데이터가 홀수개인 경우 Q1Q3을 구할때 Q2를 포함해서 구하는 방법도 있으나 딱히 정해진게 아니라서 위에서 말한 step을 거쳐서 구하시면 됩니당.

=====

 

----------------------------------------------------------------------------------------------------------------

 

이제 사분위수의 의미와 구하는 방법을 알았으니 R을 이용하여 구해보겠습니다.

 

R에는 다행히(?) 사분위수를 한번에 구해주는 quantile() 함수가 존재합니다.

 

Q1 <- quantile(data, 0.25)

 

이런식으로 사용합니다.

R에서는 Q1, Q3을 구할때 Q2를 포함한 값의 중앙값으로 계산을 하였네요..

손계산하고 출력값이 다르다고해서 너무 당황하지 않으셔도 됩니당 ㅋ.ㅋ

구하는 방법이 다른거지 틀린게 아니니까요 (●'◡'●)a

 

이번에 사분위수를 제대로 이해했다면 다음글에 쓸 분위수도 똑같은 개념이기 때문에 쉽게 이해할 수 있을거에요~

 

나중에 더 뒤쪽 공부를 하다가 까먹으면 다시 앞쪽으로 와서 보고 가면 되겠지만 이해하지 못하고 넘어간다면 다시 공부해야하는 불상사가 생길수도 있으니까... 한번할때 외우지말고 이해하는게 좋은것같아요!!

반응형
Posted by dooooh
,
반응형

이번에는 표준편차를 구해보겠습니다. 만약 기본적인 통계지식이 없으시다면 이전글에 포스팅한 분산편을 보고오셔야 이해할 수 있습니당.

이전글 : 2020/03/03 - [R] - R / Rstudio Variance 분산을 구해보자

 

R / Rstudio Variance 분산을 구해보자

그냥 안할때는 막막했는데 막상 하나씩 하다보니까 재밌는것 같기도하구 ㅋㅅㅋ 이번에는 분산을 한번 구해볼텐데 이전 글에 썼던 평균값, 중앙값, 최빈값을 보고오는게 R에서 데이터가 이렇구나~~~ 하고 이해가..

dooooh.tistory.com

우선 표준편차sigma(σ) 라는 기호를 사용하여 나타냅니다.

분산이 데이터셋의 퍼진 정도를 알려준다면 표준편차는 각 데이터가 평균으로부터 얼마나 떨어져 있는지 알려줍니다.

 

표준편차를 구할때에는 분산을 구하고 루트를 씌워 구합니다.

R을 이용하여 2가지 방법으로 표준편차를 구해보겠습니다.

1. 분산에 루트 씌워 구하기

2. sd() 함수 이용하기

위는 두가지 방법으로 이전 글에서 예시로 들었던 분산으로부터 표준편차를 구한것입니다. 데이터 수가 적다보니까 오차가 생긴 모습입니다.

 

여기서 나온 표준편차가 의미하는 바는 무엇일까요?

 

표준편차는 위에서 말한것과 같이 평균으로 부터 얼마나 떨어져 있는가를 알려줍니다.

 

실제로 데이터의 68.3%1시그마 안에 포함되어있고 95%2시그마 안에 99.7%3시그마 안에 포함되어 있을것으로 예측할 수 있습니다. 만약 3시그마를 벗어난다면 매우 드문 경우를 나타냅니다.

 

반응형
Posted by dooooh
,
반응형

그냥 안할때는 막막했는데 막상 하나씩 하다보니까 재밌는것 같기도하구 ㅋㅅㅋ

 

이번에는 분산을 한번 구해볼텐데 이전 글에 썼던 평균값, 중앙값, 최빈값을 보고오는게 R에서 데이터가 이렇구나~~~ 하고 이해가 가서 좋습니당.

사실 글이 짧아서 5분도 안걸리지유👍 ㅋ.ㅋ

이전글 : 2020/02/26 - [R] - R / Rsudio 평균값 중앙값 최빈값을 구해보자~(평균값편)

 

R / Rsudio 평균값 중앙값 최빈값을 구해보자~(평균값편)

통계 문제를 풀다 보면 귀찮은 손 계산이 너무 많더라고요 😂 그래서 계산기 대신에 R을 사용하기로 했습니다 평균값, 중앙값, 최빈값의 의미를 이해하고 코딩을 해보겠습니다. | 평균값 | 평균은 데이터 총합 /..

dooooh.tistory.com

우선 분산이란 무엇인가?

 

분산이란 데이터가 기댓값으로부터 얼마나 떨어져 있는지 알 수 있는 지표입니다.

말그대로 그래프로 나타내었을때 얼마나 퍼져있는가를 나타냅니다

(기댓값평균이라고 생각하면 됩니다.)

 

밑의 그래프들을 보면 한눈에 비교해봐도 그래프의 퍼진 정도가 차이나는것을 알 수 있습니다.

 

 

R을 이용하여 분산을 코딩하기 위해 분산을 구하는 방법을 차근차근 이해해봅시다.

 

처음으로 각 데이터가 평균으로부터 떨어진 거리를 구해줍니다.

X는 데이터 mu는 평균

difference들은 각 value - mean으로 나타내 퍼진 정도를 알 수 있습니다.

 

하지만 우리가 원하는 것은 각각의 퍼진 정도가 아닌 자료 전체를 볼 수 있는 하나의 분산값입니다. 그러므로 각각의 평균과의 거리에 평균을 내줍니다.

이렇게 구하는 방식에는 문제가 하나 있습니다.

만약 구하고자 하는 데이터가 좌우대칭인 경우 예를들어 c(10, 20, 10) 인 경우에 거리의 평균은 0이 나오게 됩니다. (-10 + 0 + 10) / 3 = 0

 

이러한 문제를 해결하기 위해 평균과의 거리에 제곱을 해줍니다.

마지막으로 difference들을 모두 합해준 뒤 data의 개수로 나눠주면 분산을 구할 수 있습니다.

 

이렇게 위의 3가지 과정

1. 평균과의 거리 구하기

2. 거리의 제곱합을 구하기

3. 제곱합을 데이터 개수로 나누기

을 거치면 어렵지 않게 분산을 구할 수 있습니다.

(좌변의 시그마는 표준편차이고 분산에 루트 씌워준 값입니다.)

 

식으로 보면 조금 복잡해 보일 수 있지만 내용을 이해하고 구하는 과정을 나눠서 하나씩 하다보면 손쉽게 구할 수 있습니다.

 

분산을 일일이 손으로 계산다하보면 실수할 때도 많고 시간도 오래 걸리는데 코딩해서 하니까 너무 편한것같아요 ㅋ.ㅋ 전공 책에는 지문에 자료수가 별로 많지 않아서 코딩이나 손계산이나 시간이 비슷비슷한것 같지만 검산하기가 너무 편하네요~~~

반응형
Posted by dooooh
,
반응형

이번엔 최빈값에 대해 알아보겠습니다.

 

이름에서 알 수 있듯이 제일 많이 등장한 값을 말합니다. 자료의 성질에 따라 한 개가 아닐 수도 있고 존재하지 않을 수도 있습니다.

 

R로 최빈값을 찾기위해 2가지 과정으로 진행하겠습니다.

 

1. 주어진 자료의 최빈값 찾기

2. R의 함수를 이용하여 최빈값 찾기

 

step1) 최빈값을 찾아보자~

 

자료의 수가 적은 경우에는 직접 찾아볼 수 있지만... 그것이 여의치 않은 경우에는 2가지 과정만 거쳐주면 됩니다.

1) 각 자료마다 빈도수를 계산한다

2) 빈도수를 비교한다

 

크기가 큰 데이터를 마주치게되면 막막해지는 경우가 많습니다. 이럴 때는 좀 더 작은 범위로 세분화시켜서 비교해보면 좀 더 쉽게 원하는 정보를 얻을 수 있습니다.

 

적당한 숫자들로 예를 들어보겠습니다.

 

18, 10, 13, 12, 20, 24, 13, 24, 18, 13

 

최빈값이 딱 보이지 않는다면 위의 방법을 이용하면 됩니다.

 

18

10

13

12

20

24

2

1

3

1

1

2

 

표를 보면 최빈값이  13  인 것을 바로 알 수 있습니다.

 

step2) R 함수를 이용하여 최빈값을 찾아보자구요

 

최빈값을 찾아주는 Mode() 라는 함수는 R패키지의 DescTools에 있습니다.

 

Mode() 함수를 이용하여 위의 예에서 최빈값을 찾아보도록 하겠습니다.

 

R을 이용하여 구해본 결과 위와 같은 결과가 나왔습니다.

 

최빈값이 한 개가 아닌 경우도 살펴보겠습니다.

최빈값이  1, 2  2개이기 때문에 3번째 값으로 NA가 나오게 됩니다.

 

이처럼 R을 이용하면 데이터가 커도 손쉽게 최빈값을 구할 수 있습니다~

반응형
Posted by dooooh
,