시계열 데이터는 추세, 계절성, 주기 등의 패턴이 복합적으로 섞인 형태를 지닐 수 있다. 여러 요인이 합쳐진 데이터를 단번에 파악하기는 어렵지만, 각 요인을 분리하면 데이터를 쉽게 파악하는데 도움이 된다. 그래서 이 글에서는 R에 내장된 1920~1939년 Nottingham의 월 평균 기온이 담긴 nottem 데이터를 사용해서 4가지의 시계열 분해법을 간단히 소개하고자 한다. 1) 고전적인 분해 고전적인 분해법은 대부분의 시계열 분해의 기반이 될 정도로 비교적 단순하게 사용할 수 있다. 분해 방법에 대해 간단히 설명하자면 다음과 같다. 우선, 이동평균을 사용하여 추세-주기 성분을 계산한 후에 추세를 제거한 시계열을 계산한다. 그 다음, 계절별 추세를 제거한 평균에서 추세-주기 성분 값을 제외한 나머지 ..
Programming Language 검색 결과
[R] 가설검정, 상관분석에서 제시한 기후 데이터를 바탕으로 PM10(미세먼지)에 대한 회귀분석을 진행하고자 한다. 1. 설명변수 선택 회귀선을 나타내는 변수의 수가 많아지면 과적합이 발생하거나 많은 계산이 필요하므로, 가능한 적은 변수로 최적의 회귀선을 찾는 것이 중요하다. summary(lm(PM10 ~ SO2 + CO + NO2, data = data)) 이전 글에서 미세먼지와 비교적 강한 상관관계를 가진 SO2(이산화황), CO(일산화탄소), NO2(이산화질소)를 독립변수로 선정하고 다중회귀를 시행한다. 회귀선은 -12.5523 + 6512.7755 * SO2 + 65.2830 * CO - 214.6248 * NO2로 나타났다. 각 변수의 회귀계수가 모두 0.05보다 작지만, 결정계수의 값이 0...
1. 가설검정 - t 검정 가설검정은 모집단에 대한 가설을 설정한 후, 가설의 채택여부를 정하는 분석방법이다. 가설의 채택은 귀무가설이 옳다는 전제 하에 test statistic을 구한 다음 유의수준의 크기에 따라 결정한다. 가설은 귀무가설과 대립가설 중 하나를 선택하게 된다. t 검정은 '두 집단의 평균 차이가 없다'는 귀무가설과 '두 집단의 평균 차이가 있다'는 대립가설 중 하나를 선택하는 통계 분석 방법이다. 다음의 기후 데이터를 활용해서 2018년과 2019년의 미세먼지 농도가 통계적으로 유의미한 차이가 있는지 판단하고자 한다. data$year
ggplot2는 그래프를 만들 때 주로 사용하는 패키지로, 데이터 시각화를 쉽게 할 수 있다. ggplot2에서 많이 쓰이는 함수는 ggplot()과 qplot()이다. qplot()은 ggplot()에 비해 사용하기는 편하지만, 세부적인 기능이 적어서 전처리 단계에서 활용된다. 반면, ggplot()은 그래프의 세부 기능을 다루기 쉽기 때문에 시각화 단계에서 많이 활용된다. 1) 산점도 medical_data %로 함수를 연결하지만, ggplot2 패키지에서는 함수 연결을 +로 한다. 2) 막대 그래프 #ggplot(data = medical_data, aes(x = age, y = mean_disease)) + geom_col() ggplot(data = medical_data, aes(x = dis..
1. 데이터 합치기 1) 열 기준 합치기 data1
Data Frame은 다변량 데이터 분석에서 주로 사용되는 list형의 데이터 구조다. 1. Data Frame 생성 col1 % filter(age == 50 & (period > 150 | term > 2)) data에서 age가 50이면서 period가 150보다 크거나 term이 2보다 큰 것만 추출한 것이다. 3) arrange() : 정렬 data %>% arrange(disease) data %>% arrange(desc(disease)) 정렬할 기준 변수에 따라 오른차순, 내림차순으로 정렬할 수 있다. 4) mutate() : 파생변수 추가 data %>% mutate(churn_mutate = ifelse(data$activity % head(data..
데이터 분석을 위한 프로그래밍 언어로 Python과 R이 주로 사용되는데, Python은 데이터 분석을 위해서 만들어진 언어는 아니다. 소프트웨어를 개발하기 위한 일반 프로그래밍 언어지만, 딥러닝을 활용할 수 있는 라이브러리가 있는 등의 기능을 많이 포함하고 있기 때문에 데이터 분석 분야에서 주목을 받고 있다. 반면, R은 데이터 분석을 위한 용도로 만들어진 언어다. 다른 프로그래밍 언어에 비해 문법이 간단하기 때문에 프로그래밍 지식이 많지 않아도 되기에 쉽게 사용할 수 있는 것이 장점이다. 1. R Installation The Comprehensive R Archive Network cran.r-project.org RStudio | Open source & professional software f..
1. Introduction Python에서 주로 사용되는 자료구조는 List, Tuple, Set, Dictionary 4종류가 있다. Python은 List를 배열처럼 취급하기 때문에 아이템을 검색하는 데 걸리는 시간은 선형적(Linear)으로 증가한다. 따라서, 용량이 큰 데이터를 저장하기에는 효율성이 떨어진다. Tuple은 List와 달리 변형이 불가능(Immutable)한 리스트로, 검색하는 데 걸리는 시간은 List와 동일하게 데이터 양과 비례하게 증가한다. Set은 List와 Tuple과 달리 순서가 없으며, 중복되는 아이템을 저장할 수 없는 특징이 있어 조회 업무 등에서 사용된다. Dictionary는 키(Key)를 값(Value)에 매핑한다. 같은 Dictionary에 포함된 Key들은 ..
[Python 예외 처리]에서 설명한 것 처럼, 때로는 예외 상황을 강제로 에러 처리를 하는 경우도 발생한다. 개발자가 예상하지 못했던 오류나 코드의 비일관성으로 인해 유지하는데 어려움을 겪는 경우가 발생하기 때문이다. C++에서는 이런 예외 처리를 try와 catch로 묶어서 사용한다. #include #include using namespace std; int main(){ vector number; int index = 0; try{ index = number.at(5); } catch (exception error){ cout
코드를 작성하다보면 수많은 오류를 마주하게 된다. 그러면 우리는 오류 메시지를 통해서 잘못된 부분을 수정해서 오류를 줄여나간다. 그런데, 때로는 실행 도중 오류가 발생하더라도 이를 무시한 채 수행하기를 원할 때도 있을 것이다. Python에서는 try와 execpt를 통해서 이러한 예외 처리를 할 수 있다. 일반적으로 오류가 발생하는 대표적인 경우는 0으로 다른 수를 나누는 경우(ZeroDivisionError), directory 내에 없는 파일을 열고자 하는 경우(FileNotFoundError), 그리고 리스트 범위를 넘어서는 부분을 얻고자 하는 경우(IndexError) 등이 속한다. 이러한 오류를 처리하기 위한 구문을 작성하는 방법은 다음과 같다. try: ... except [발생 오류[as ..
최근댓글