목록데이터 분석 (33)
귀퉁이 서재
Udacity의 Data Analyst Nano Degree를 모두 끝냈습니다. 3월 말 시작하여 3개월 정도가 걸렸습니다. 코스는 굉장히 만족스러웠습니다. 시작하기 전에는 3개월에 100만원이라는 돈을 들이며 온라인 강좌를 듣는 게 낭비는 아닐지 고민했지만 투자한 돈이 아깝다는 생각은 한번도 들지 않았습니다. 본 코스에서는 데이터 분석에 대해 배웁니다. 통계 기본, 데이터 수집, 데이터 정제, 데이터 시각화 순으로 배우며 주로 Pandas, Numpy, Matplotlib, Seaborn과 같은 라이브러리를 사용합니다. 과정은 동영상 강의 - 읽기 자료 - 추가 레퍼런스 - 퀴즈 - 실습 - 프로젝트순으로 구성되어 있습니다. 커리큘럼도 짜임새 있어 이해하기가 쉬웠습니다. 진도를 나가는 재미도 있었고요...
이번 챕터에서는 독립 변수가 여러개인 다변량 데이터에 대한 시각화를 다루겠습니다. 독립 변수가 3개일 때를 예로 들어 설명하겠습니다. 기본적으로 x축과 y축에 변수 하나씩을 표현하고, 나머지 변수는 모양(shape), 크기(size), 색깔(color) 등으로 표현할 수 있습니다. Encoding via Shape (2개의 numeric variables, 1개의 categorical variable 일때) cat_markers = [['A', 'o'], ['B', 's']] for cat, marker in cat_markers: df_cat = df[df['cat_var1'] == cat] plt.scatter(data = df_cat, x = 'num_var1', y = 'num_var2', mar..
지난 글인 단변량 데이터 시각화에서는 가장 단순한 히스토그램과 막대 그래프에 대해 알아봤습니다. 이번 챕터에서는 변수가 두개인 이변량 데이터를 시각화하는 그래프에 대해 알아보겠습니다. 제 깃헙에서 전체 코드와 데이터를 받으실 수 있습니다. import import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sb %matplotlib inline fuel_econ = pd.read_csv('./fuel-econ.csv') 두개의 수치형 데이터 (Two numeric) 두개의 수치형 데이터를 시각화 하는 방법에는 scatter plot, heat map, line plot이 있습니다. 각각에 대해 알아보겠..
단변량(uniariate) 데이터를 시각화하는 것은 아주 쉽습니다. 몇 가지 그래프를 그리는 코드를 간단히 짚어보겠습니다. 데이터와 notebooks 코드는 제 깃헙에서 볼 수 있습니다. (데이터: pokemon.csv, notebooks: Univariate Exploration of Data.ipynb) 히스토그램(histogram)과 막대 그래프(bar chart)가 비슷한 모양이라 헷갈릴 수 있습니다만 차이점이 있습니다. 히스토그램은 수치형 데이터(quantative)를, 막대그래프는 카테고리 데이터(qualitive, categorical data)를 표현하는데 쓰입니다. (Reference 1) import import numpy as np import pandas as pd import ma..
데이터 시각화를 정확하고 효율적으로 하기 위해서는 Chart Junk, Data Ink Ratio, Lie factor를 고려해야 합니다. Chart Junk Chart Junk란 그래프상의 정보를 이해하는데 굳이 필요하지 않은 것을 의미합니다. 두껍고 진한 격자, 불필요한 글귀, 불필요한 그림, 3D 그래프나 그림자, 화려한 축의 장식 등이 이에 해당합니다. 그래프의 목적은 정보를 한눈에 파악하기 위함입니다. 앞서 말한 5가지 요소들(Chart Junk)은 정보를 한눈에 파악하는데 방해가 될 뿐입니다. 그래프는 최대한 깔끔하게 그려줘야 합니다. Data Ink Ratio Data Ink Ration를 구하는 식은 아래와 같습니다. Data Ink Ratio = 데이터를 기술하는 데 쓰인 잉크의 양 / ..
이번 시간에는 데이터 시각화의 중요성에 대해 알아보겠습니다. 이를 위해 Autodesk Research의 Justin Matejka, George Fitzmaurice가 쓴 Same Stats, Different Graphs: Generating Datasets with Varied Appearance and Identical Statistics through Simulated Annealing을 요약해보겠습니다. '같은 통계치, 다른 그래프'라는 제목인데 내용이 상당히 흥미로웠습니다. 이번 글에 나오는 모든 내용과 그림파일은 Same Stats, Different Graphs 논문 및 Autodesk Research 홈페이지에 기재되어 있는 것입니다. Anscombe's Quartet 영국의 통계학자 ..
Data Wrangling의 3단계 (Gather Data -> Assess Data -> Clean Data) 중 마지막 단계인 Cleaning Data입니다. Assess Data에서 이슈별로 (Quality, Tidiness) 어떤 데이터를 어떻게 정제해야하는지 정의를 했을 겁니다. 이제 실제로 정제를 하는 단계입니다. 데이터 정제를 할 때는 Missing Value를 먼저 채워주고, Tidiness 문제를 해결한 뒤, 마지막으로 Quality 문제를 해결하면 됩니다. 또한 원본 DataFrame을 유지하기 위해 꼭 copy()해서 Cleaning을 하도록 합니다. (Reference1) 데이터 정제(Cleaning) 실습 데이터를 정제하는 실습을 해보겠습니다. 3가지 데이터셋 환자 정보(patie..
이전 챕터에서 데이터 모으기에 대해 배웠습니다. 이번 챕터는 데이터 랭글링의 두번째 단계, 데이터 평가하기입니다. Gathering한 데이터를 눈으로, 코드로 평가해야 합니다. 정제하기 전 데이터는 Dirty Data, Messy Data로 구분할 수 있습니다. Dirty Data (Low Quality Data) Dirty Data는 컨텐츠(Content) 자체에 문제가 있는 데이터입니다. 다른 말로 Low Quality Data라고도 합니다. 즉 데이터가 부정확하거나, 손상되었거나, 중복된 데이터를 의미합니다. Dirty Data는 다시 아래 4가지 문제로 구분할 수 있습니다. Completeness: 모든 데이터가 채워져 있는가? - 행, 열에 Null 값이 없는지 봐야합니다. Validity: S..
미디어위키(Media Wiki) API 미디어위키(Media Wiki) API는 미디어위키에 접근할 수 있는 API입니다. 너무 당연한 설명이네요.. (Reference1) 미디어위키에 접근할 수 있는 API 라이브러리는 다양합니다. Python 기반 라이브러리 중 가장 많이 쓰이는 것은 wptools입니다. (Reference2) 인터넷을 통해 미디어위키에 직접 접속해 검색하는 것을 wptools를 활용하여 코드화할 수 있습니다. 미디어위키에 '마하트마 간디'를 쳐서 검색 결과를 가져오는 작업을 코드화해 보겠습니다. (Mahatma gandi 위키피디아 검색 결과) 우선 wptools 라이브러리를 설치합니다. pip install wptools Mahatma gandi를 검색한 미디어위키 페이지의 ur..
우선, 데이터 랭글링(Data Wrangling)이란 무엇인지 알아보겠습니다. 아래는 위키피디아 정의입니다. Data wrangling, sometimes referred to as data munging, is the process of transforming and mapping data from one "raw" data form into another format with the intent of making it more appropriate and valuable for a variety of downstream purposes such as analytic. 쉽게 말하면, 원천 데이터(raw data)를 분석하기 좋은 데이터로 변환하는 작업을 뜻합니다. 데이터 랭글링은 총 5단계로 구분됩니다..
이번 챕터에서는 로지스틱 회귀에 대해 알아보겠습니다. 이전 챕터까지 배웠던 단순 선형 회귀, 다중 선형 회귀에서는 독립 변수가 양적 데이터 혹은 범주형 데이터이고, 종속 변수가 양적 데이터였습니다. 이번엔 종속 변수가 범주형 데이터일 때의 회귀 모델에 대해 알아보겠습니다. 종속 변수가 범주형 데이터이며 이진형(binary)일 때를 로지스틱 회귀라 합니다. 위키피디아 정의를 가져와 봤습니다. 로지스틱 회귀(logistic regression)는 D.R.Cox가 1958년에 제안한 확률 모델로서 독립 변수의 선형 결합을 이용하여 사건의 발생 가능성을 예측하는 데 사용되는 통계 기법이다. 로지스틱 회귀의 목적은 일반적인 회귀 분석의 목표와 동일하게 종속 변수와 독립 변수 간의 관계를 구체적인 함수로 나타내어 ..
독립 변수 x를 제곱하거나 서로 곱함으로써 higher order term을 만들 수 있습니다. 보통 x₁² (quadratics) x₁³ (cubics), x₁x₂ (interactions)를 많이 씁니다. quadratics와 cubics는 회귀 모델이 곡선일 때 쓰이며, interactions는 x₁의 변화가 x₂에 따라 달라질 때 쓰입니다. interaction을 써야 하는 경우에 대해 설명하겠습니다. 보라색 선은 neighborhood B일 때 Area에 따른 price 회귀선이며, 파란색 선은 neighborhood A일 때 Area에 따른 price 회귀선입니다. 두 회귀선 모두 기울기는 b₁입니다. 즉 neighborhood A이든 neighborhood B이든 Area의 증가에 따른 pr..
이번 시간에는 다중공선성과 VIF에 대해 알아보겠습니다. 독립 변수 X는 종속 변수 Y 하고만 상관 관계가 있어야 하며, 독립 변수끼리 상관 관계가 있어서는 안 됩니다. 독립 변수간 상관 관계를 보이는 것을 다중공선성(Multicollinearity)이라고 합니다. 다중공선성이 있으면 부정확한 회귀 결과가 도출됩니다. (X와 Y의 상관 관계가 반대로 나온다던가 검정 결과가 다르게 나온다던가 말이죠.) 회귀 모델에 다중공선성이 있는지 파악하는 방법은 두 가지가 있습니다. 1. 산점도 그래프 (Scatter plot Matrix) 2. VIF (Variance Inflation Factors, 분산팽창요인) 산점도 그래프를 통해 독립 변수끼리 상관 관계가 있는지 파악하는 방법에 대해서는 아래 Python 코..
본 챕터는 이전 챕터와 내용이 연결되어 있습니다. 가변수를 활용하여 범주형 데이터를 양적 데이터로 변환하기 이전 챕터에서 범주형 데이터(categorical data)를 제외하고 양적 데이터(quantitative data)만을 사용해서 회귀 결과를 도출했습니다. 본 챕터에서는 회귀 모형에서 범주형 데이터를 어떻게 사용할 수 있는지 알아보겠습니다. 가변수(dummy variables)라는 것을 활용하여 회귀 모형에 범주형 데이터를 추가할 수 있습니다. 이전 챕터에서 Neighborhood와 Style이 범주형 데이터였습니다. Neighborhood에는 A, B, C 총 3개의 데이터가 있습니다. 이 데이터를 양적 데이터로 바꾸기 위해서 위 그림과 같이 가변수(dummy variables)를 사용하는 것입..
이전 챕터에서는 단순 선형 회귀 모델에 대해서 배워봤습니다. 단순 선형 회귀식은 아래와 같습니다. 이번 챕터에서는 다중 선형 회귀(Multiple Linear Regression)에 대해 알아보겠습니다. 다중 선형 회귀식은 아래와 같습니다. 상관 계수(correlation coefficient)는 두 변수 간 선형 관계를 나타내는 척도이기 때문에 단순 선형 회귀에만 쓰이고, 다중 선형 회귀에는 쓰이지 않습니다. 또한, 다중 선형 회귀식에서 양적 데이터 (quantitative) 뿐만 아니라 범주형 데이터 (categorical)도 사용하는 방법을 알아보겠습니다. 아래는 5개의 조건에 따른 집 값을 나타낸 표입니다. 종속 변수 독립 변수 집 값 지역 크기 침실 개수 화장실 개수 집 스타일 $634K A 1..
본 챕터에서는 선형 회귀에 대해 알아보겠습니다. 통계학에서, 선형 회귀(Linear regression)는 종속 변수(또는 응답 변수) y와 한 개 이상의 독립 변수 (또는 설명 변수) X와의 선형 상관관계를 모델링하는 회귀분석 기법이다. 한 개의 독립 변수에 기반한 경우에는 단순 선형 회귀, 둘 이상의 독립 변수에 기반한 경우에는 다중 선형 회귀라고 한다. (Reference1) 선형 회귀 그래프로는 산점도(Scatter plots)를 많이 활용합니다. 그리고 독립 변수와 종속 변수 간의 상관관계를 나타내는 척도를 상관 계수(correlation coefficient)라고 합니다. 상관 계수는 보통 r로 표기합니다. 여러 상관 계수가 있지만 선형 회귀의 상관 계수로 가장 많이 쓰이는 것은 피어슨 상관 ..
A/B Test A/B Test는 마케팅이나 웹 페이지 개선에 많이 쓰이는 테스트 기법입니다. 기존의 웹페이지를 새로운 디자인으로 바꾸기 전에 이 디자인이 정말 고객에게 효과가 있는지를 먼저 판단해야 할 것입니다.기존의 웹페이지(A)와 새로 디자인된 웹페이지(B)가 있을 때, 새로 디자인된 웹페이지가 더 효과가 있는지(고객을 더 많이 유입하는지, 고객의 클릭률을 더 많이 유도하는지, 구매율을 높이는지, 고객 만족도를 높이는지 등)를 테스트하는 것이 A/B test입니다. 특정 그룹에는 기존 웹페이지만 보여주고, 또 다른 특정 그룹에는 새로 디자인된 웹페이지를 보여줍니다. 여기서 기존 웹페이지를 보는 그룹을 대조군, 새로운 웹페이지를 보는 그룹을 실험군이라고 합니다. 귀무가설과 대립가설은 아래와 같습니다...
p-value에 대해서는 앞선 챕터에서 간단히 알아봤습니다. 본 챕터에서는 p-value가 가지고 있는 함정에 대해 알아볼 것입니다. 바로 이전 챕터에서 설명한 것처럼, 통계적 유의성이 항상 실질적 유의성으로 귀결되는 것은 아닙니다. 또한, p-value를 통계적 유의성을 판단할 수 있는 중요한 지표 중 하나로 생각해야지, p-value 자체를 연구의 목적으로 생각해서는 안됩니다. 하지만, 유의미한 p-value를 도출하기 위해 가설검정 자체를 조작하는 연구자들도 간혹 있다고 합니다. p-value는 통계적 유의성의 척도(measure)이지, p-value 자체가 목적(target)은 아닙니다. "When a measure become a target, it is no longer a measure“. ..
표본의 크기 (sample size)가 아주 크다면, 작은 차이조차도 민감하게 받아들여 어떠한 가설이라도통계적으로 유의하다는 결과가 나올 수 있습니다. 따라서 항상 대립가설을 채택하게 됩니다. 하지만 통계적으로 유의하다고, 실질적으로 유의한 것은 아니므로 주의를 해야 합니다. With large sample sizes, hypothesis testing leads to even the smallest of findings as statistically significant. However, these findings might not be practically significant at all. 정말 표본의 크기가 크면, 통계적으로 유의한 결과가 나오는지 실습해보겠습니다. 실습용 데이터는 제 깃헙에서 받..
가설검정 가설검정(Test of hypotheses)이란 자연법칙이나 사회현상에 대한 관찰 결과를 기반으로 두 가지 가설을 세우고 그 두 가설 중 어느 것이 참인지를 가려내는 것입니다. 가설검정은 학문적 연구에서 뿐만 아니라, 실생활과 관련된 거의 모든 분야에서 쓰입니다. 정책결정, 마케팅 전략 결정, 소비자 선호도를 반영한 제품 설계 등의 문제가 모두 가설검정의 영역에 속한다고 할 수 있습니다. 귀무가설과 대립가설 가설검정을 하기 위해서는 서로 대립되는 가설 두 개를 세웁니다. 통상적으로 새로 제기되는 주장을 대립가설(alternative hypothesis)로 하고, 지금까지 사실로 인식되어온 주장을 귀무가설(null hypothesis)로 합니다. 암을 치료하는 신약이 개발되어 효과성을 측정한다고 ..