2023. 4. 17. 12:38ㆍComputer Sciences/BigData
변수
질적 변수
- 선택이 필요한 변수 혹은 종류를 구별하기 위한 변수를 의미한다.
- 선택이 필요한 변수
- 1. 매우 좋음 2. 좋음 3. 보통 4. 나쁨 5. 매우 나쁨
- 선택이 필요한 변수
- 종류를 구별하기 위한 변수
- A형 B형 O형 AB형
양적 변수
- 양을 표현하는 변수를 의미한다.
- 시험 점수, 온도 등
💡 매우 좋음을 1, 매우 나쁨을 5로 표현한 수치형 변수는 질적 변수이다. 헷갈리지 말자.
척도 수준
- 온도
- 60도가 30도보다 높다고 할 수 있다.
- 60도와 30도 간에는 30도 차이가 존재하며, 200도와 170도 간에도 30도 차이가 존재한다.
- 하지만 60도는 30도보다 2배 더 높다고 할 수 없다.
- 키
- 180cm가 90cm보다 2배 더 크다고 할 수 있다.
→ 온도나 키에 대한 수치가 0인 경우 없음을 의미하는가 아닌가가 간격 척도와 비례 척도를 구분하는 기준이다.
척도 | 예 | 대소 관계 | 차이 | 비 |
---|---|---|---|---|
명의 척도 | 학생번호 | x | x | x |
순서 척도 | 성적 순위 | o | x | x |
간격 척도 | 온도 | o | o | x |
비례 척도 | 키 | o | o | o |
이산형 변수
- 하나 하나의 값을 취하는 변수를 의미한다.
- 서로 인접한 숫자 사이에 값이 존재하지 않는다.
- 주사위의 눈, 결석 횟수, 결석 학생 수 등
연속형 변수
- 연속적인 값을 취할 수 있는 변수를 의미한다.
- 어떤 두 숫자 사이에도 반드시 숫자가 존재한다.
- 길이, 무게, 시간 등
💡 컴퓨터는 binary이기 때문에 엄밀히 말하면 연속형 변수는 존재하기 어렵다. 하지만 연속형 변수로 취급한다.
값
대푯값
- 데이터를 하나의 값으로 요약한 지표
- 데이터의 특징을 한 번에 파악하기 쉽다는 장점이 있으나, 데이터 해석에 있어 오류에 빠지기 쉽다.
- 다양한 지표를 함께 보고 데이터를 시각화해보는 것이 좋다.
평균값
$$
\bar{x}= \frac{1}{n} \sum_{i=1}^n x_i=\frac{1}{n}(x_1+x_2+\cdots+x_n)
$$
in python
sum(scores) / len(scores)
in Numpy
scores_np.mean()
np.mean(scores)
in Pandas
scores_df.mean()
# pd.mean(scores_df) 에러 발생!!
💡 Numpy는 자료구조와 Numpy 자체에서 평균 함수인 mean()을 지원하지만 Pandas는 자료구조에서 호출하는 식으로만 지원한다.
다양한 평균값
- 일반적으로 평균이라고 하면 산술 평균을 의미한다.
- 산술 평균은 이상치에 민감하기에 다양한 대안들이 제시되었다.
💡 절사 평균이나 기하 평균, 조화 평균은 산술 평균의 대안이 아니라 각각의 쓰임새가 다른 것이므로 오해하지 말자.
절사 평균
- 양 극단치의 일부를 제외하고 구한 산술 평균을 의미한다.
- 과제 평가 시 많이 사용된다.
- 5명의 평가자가 있으면 최고 평가자와 최소 평가자의 점수를 제외한 3명의 평가 점수로 평균을 구하는 방법이다.
기하 평균
- 산술 평균이 합의 평균이라면, 기하 평균은 곱의 평균이다.
$$
\sqrt[n]{x_1\times x_2\times x_3 \times \cdots \times x_n}
$$
- 성장률의 평균 계산에 많이 사용된다.
- 10% 상승 후, 10% 하락한 것에 대한 기하 평균을 구하면 다음과 같다
$$
\sqrt[2]{1.1 \times 0.9}=0.995
$$
조화 평균
- 역수의 산술 평균의 역수이다. 역수의 차원에서 평균을 구하고, 다시 역수를 취해 원래 차원의 값으로 돌아오는 것이다.
$$
\frac{n}{\sum_{i=1}^n \frac{1}{x_i}}
$$
- 평균적인 변화율을 구할 때 주로 사용된다.
- F-1 Score 계산 시 사용된다.
세 평균의 관계
$$
\frac{n}{\sum_{i=1}^n \frac{1}{x_i}} \leq \sqrt[n]{x_1\times x_2\times x_3 \times \cdots \times x_n} \leq \frac{1}{n}\sum_{i=1}^n x_i
$$
중앙값
- 데이터를 크기 순서대로 나열할 때 정확히 중앙에 위치한 값이다.
- 이상값에 영향을 덜 받는다.
- 데이터의 개수 n이 홀수라면 \(\frac{(n+1)}{2}\)번째 데이터가 중앙값
- 데이터의 개수 n이 짝수라면 \(\frac{n}{2}\)번째 데이터와 \(\frac{(n+1)}{2}\)번째 데이터의 평균이 중앙값
최빈값
- 데이터에서 가장 많이 나타나는 값을 의미한다.
- Dataframe, Series의 mode 함수를 이용해 구할 수 있다.
- Numpy에는 mode 함수가 없다.
편차
- 각 데이터가 평균으로부터 떨어져 있는 정도를 의미한다.
scores = df["mathmatics"]
mean = np.mean(scores)
deviation = scores - mean
deviation
# 0 -13.88
# 1 1.12
# 2 -15.88
# 3 -15.88
# 4 -2.88
# 5 -18.88
- 편차에도 대푯값이 필요하다.
- 값이 많아지면 한 눈에 편차가 얼마나 되는지 확인하기 어렵다.
- 두 데이터 사이에 어느 데이터가 편차가 큰지 비교하기 어렵다.
- 편차의 평균은 항상 0이다.
$$
\frac{1}{n} \sum_{i=1}^n (x_i-\bar{x})=\frac{1}{n} \sum_{i=1}^n x_i-\frac{1}{n} \sum_{i=1}^n \bar{x}\ =\bar{x}-\bar{x} =0
$$
- 그러므로 다른 방식으로 대푯값을 구해야 한다.
- 편차 절댓값의 평균 - 평균 절대 편차, 평균 편차
- 편차를 구할 때, 평균을 빼는 것이 아닌 중앙값을 빼는 방법도 있다(중앙값 절대 편차).
- 편차 제곱의 평균 (분산)
- 편차 제곱의 평균에 제곱근 (표준 편차)
- 편차 절댓값의 평균 - 평균 절대 편차, 평균 편차
평균 절대 편차, 평균 편차
$$
\frac{1}{n} \sum_{i=1}^n \lvert{x_i}-\bar{x}\rvert
$$
- 잘 안 쓰인다.
- 평균 편차의 최솟값은 중앙값이다.
- 평균 편차는 미분이 불가능하다.
- 절댓값 계산이 사칙연산에 비해 복잡하다.
분산
- 편차의 제곱의 평균이다.
모분산
- 모집단에 대한 분산이다.
$$
\frac{1}{n} \sum_{i=1}^n (x_i-\bar{x})^2
$$
표본 분산
- 표본에 대한 분산이다.
$$
\frac{1}{n-1} \sum_{i=1}^n (x_i-\bar{x})^2
$$
💡 모집단은 조사하고자 하는 집단 전체를 말하며 표본은 모집단 중 일부만 추출해낸 집단을 의미한다. 따라서 ‘모’가 접두어인 건 집단 전체에 대한 것이고 ‘표본’이 접두어이면 표본에 대한 것이다.
Numpy와 Pandas
- 두 라이브러리 모두 var() 라는 함수로 분산을 제공한다.
- 둘 다 ddof(delta degrees of freedom. 자유도)이라는 파라미터를 제공한다.
- 이 값은 편차 제곱합에 대해서 N - ddof 나눠준다.
- Numpy의 기본 ddof는 0이다 → 모분산
- Pandas의 기본 ddof는 1이다 → 표본분산
표준 편차
- 분산에 제곱근한 값이다.
- 분산의 경우 제곱할 때 데이터가 크게 증가하기 때문에 값 자체의 의미를 파악하기 어렵다.
- 그래서 분산에 루트를 씌워 원래 단위로 맞추는 과정을 해준 것이 표준 편차다.
$$
\sqrt{\frac{1}{n} \sum_{i=1}^n (x_i-\bar{x})^2}
$$
- 제곱에 제곱근을 씌웠기 때문에 단위가 원래 데이터와 같아진다는 장점이 있다.
Numpy와 Pandas
- 모두 std() 라는 함수로 제공한다.
- 둘다 ddof 파라미터를 제공한다.
- Numpy의 기본 ddof는 0이다 → 모 표준 편차
- Pandas의 기본 ddof는 1이다. → 표본 표준 편차
범위와 사분위 범위
범위
- 최댓값에서 최솟값을 뺀 값이다.
- 산포도를 최댓값과 최솟값만으로 표현한다.
사분위 범위
- 범위는 이상값에 민감하다.
- 따라서 범위를 나누어 계산해야 한다.
사분위수
- 데이터를 정렬한 후, 하위 25%, 50%, 75%에 해당하는 값을 1/4, 2/4, 3/4 분위수라고 한다.
- 2/4 분위수는 중앙값이다.
eng_s = df['english']
# Numpy
q2 = np.percentile(eng_s, 50)
q2 == np.median(eng_s)
# True
- 사분위 범위(Interquantile range, IQR)
- 3/4 분위수(Q3) - 1/4 분위수(Q1)
- Numpy에선 25, 50, 75를 사용하고 Pandas에선 0.25, 0.5, 0.75를 사용한다.
# Numpy
q1 = np.percentile(eng_s, 25)
q3 = np.percentile(eng_s, 75)
q3 - q1
# 11.000
# Pandas
q1 = eng_s.quantile(.25)
q3 = eng_s.quantile(.75)
q3 - q1
# 11.000
'Computer Sciences > BigData' 카테고리의 다른 글
[BigData] 데이터 시각화 (0) | 2023.04.17 |
---|---|
[BigData] 데이터 정규화 (0) | 2023.04.17 |
[BigData] Pandas 기본 (4) | 2023.03.14 |
[BigData] Numpy 기본 (0) | 2023.03.13 |