'Data Science/R'에 해당되는 글 4건

  1. 2015.09.25 시계열분석
  2. 2015.09.10 R 도움말 & 함수 확인
  3. 2015.09.08 R공부 Example 3회차
  4. 2015.08.31 R 공부 1회차 Example

시계열분석

Data Science/R 2015. 9. 25. 09:47

참조 

TimeSeriesAnalysis.pdf

시계열 분석


시계열 데이터느 시간에서 순차적으로 관측한 값들의 집합


그럼, Q.Discretize 하는 방법

-1) Continuous time series 로 샘플링

-1) 특정 기간 동안의 값들을 합치기


특징

- Time periods 는 equal length

- missing values 가없다.


Q. Missing Value가 있으면 어떻게 처리?

- Expectation-maximization 방법으로 처리 (Missing Value를 모형을 통해 예측)

- 이부 데이터만 Missing 한경우 가능하다.


시계열 데이터는 2가지로 나뉜다.



               랜덤요소  (Arima, Arch 모형등)

시계열 데이터


트랜드 패턴 ( 다양한 통계 모형 적용)

                          시즈널 패턴 (ACF, Fourier 방법 적용)

               패턴요소  주기 패턴   (ACF, Fourier 방법 적용)

                      기타 통계적 패턴 ( 데이터 마이닝 기법 적용: 의사결정 나무,SVM등)




사용영역

기술적

- 시계열 사이 관계 분석

- 프로세스 관리/표현 방법

- 예측


영역

- 경제학; 비즈니스 계획; 수요계획

- 재고 및 생산관리

- 산업 프로세스 관리 및 최적화

  센서 시그널 분석을 통한 지능화 모니터링


시계열 데이터 분석 접근 방법 2가지

자체 추정방법

장정 : 최소의 데이터로 빨리,쉽게 분석 주로 Short-term 예측에 이용 다른 분석의 초기분석으로 이용

단점 : Long-term 예측에 어려움 외부요소 고려하지 못함


원인 결과 방법

장점 : 많은 정보 이용 Mid-term 예측 가능

단점 : 복잡한 과정 필요



Self-Prjecting의 Classical 방법 PDF 참조

자기 산관계수를 통해서 통계적으로 알수 있음 항상, 가능하면 비주올 plot을 하는것이 좋다.

1차 트랜드가 아니라 다른차수 트랜드 이면? (일반적 트랜드를 어떻게 해결?)

여러가지 Smothing 방법이 있다.


자기상관계수 : X,Y의 선형적 관계의 정도

  자체 시계열 데이터내에서 얼마나 선형적 연관성이 있는가 

  lag k의 의미? zt와 k 만큼 shift시킨 zt-k 사이의 연관성



Global Temperature 데이터의 Autocorrelation  Function(ACF)

1. Original signal Xt : 빨리 








'Data Science > R' 카테고리의 다른 글

R 도움말 & 함수 확인  (0) 2015.09.10
R공부 Example 3회차  (0) 2015.09.08
R 공부 1회차 Example  (0) 2015.08.31
Posted by MIDDLE
,

R에서 도움말 사용법


help(log) = ?log  #log 도움말

args(log) # 함수의 인자를 알고자 할때


그러나 for문등 특수문자에 대해서는 ""로 감싸줘야 한다.

help("for")  #for에 대한 도움말 보고싶을때 사용

help.search("solve") #solve에 포함된 함수 검색을 검색할때 사용

example(solve) #예제만 보고싶을때 사용

par(ask=TRUE) #여러개 결과물이 한번에 출력될때 하나씩 볼수 있도록 지원



함수의 정의 확인

mean 등 함수의 이름을 치는 것으로 일부 함수는 확인 할 수 있지만, methods() 사용해서 목록 표시가능하다.

함수 내부의 식을 보고싶을 경우

mean.default # .default를 뒤에 붙여준다.


'Data Science > R' 카테고리의 다른 글

시계열분석  (0) 2015.09.25
R공부 Example 3회차  (0) 2015.09.08
R 공부 1회차 Example  (0) 2015.08.31
Posted by MIDDLE
,

데이터 분석의 흐름


1.    데이터를 R로 읽어 들인다.

2.    읽어 들인 데이터를 플룻 한다.

3.    읽어 들인 데이터의 통계량을 구한다.

1은 함수 c()를 이용해서 데이터를 벡터로 간단히 읽어 들일 수 있다. 2는 데이터의 특징을 파악한다는 의미에서 중요하고, 그래픽 기능이 뛰어난 R이라면 간단히 처리할 수 있다. 3은 한 그룹이상의 데이터를 추정하고 검정하며, 데이터로부터 모델식을 작성하고 그 모델에 대해 회귀분석등을 한다. 여기서는 T검정과 직선 회귀, 최소 제곱법을 시행하는 방법을 소개한다.


여섯명에게 밀가루(약이라 생각하고 먹게함)를 다른 여섯명에게는 다이어트 약을 1개월간 복용한 후 체중의 변화량을 측정한 데이터이다.


흥미있는 것은 체중의 변화다. 우선밀가루 복용그룹과 다이어트 복용 그룹의 12명 전원의 체중 변화데이터를 읽어들인다.

1과정 수행

flour <- c(3, -2, -1 ,0 ,1, -2)

diet <- c(-4, 1, -3, -5, -2, -8)

total <- c(flour, diet)


2과정 데이터를 플롯한다.

#데이터를 플롯한다.

hist(total)

#히스토그램끼리 겹치기는 힘드므로 히스토그램을 선으로그린 밀도추정곡선으로 그룹 비교한다.

plot(density(flour), xlim=c(-8,8),ylim=c(0,0.2), lty=1, ann=F)

par(new=T)

plot(density(diet), xlim =c(-8,8), ylim=c(0,0.2),lty=2)

legend(4,0.2, c("밀가루", "다이어트약"), lty=1:2, ncol=1)



검정 결과 보는법

t검정을 시행 함수 t.test() 검정결과 출력한다.

주로 > 함수명(데이터를 벡터나 행렬로 지정)

함수명(x) 하나의 표본에 대해 검정할때는 하나의 벡터 X를 지정한다.

함수명(x,y) 두개의 표본에 대해 검정등을 할때는 두개의 벡터 x,y 를 지정한다.

함수명(A) 2x2 분할표나 분산분석표등에 대해 검정을 할때는 표의 성분을 행렬 A로 지정한다.


t.test(x,y=NULL , alternative=c("two.sided", "less", "greater"), mu=0, paired=FALSE, var.equal=FALSE, conf.level=0.95)


t.test(diet , mu=0) # 모평균 mu 가 0인지 검정해서 95%의 신뢰구간을 구한다.


One Sample t-test


data:  diet   #data : diet 검정한 데이터 이름

t = -2.842, df = 5, p-value = 0.03616 #t=-2.842 : t의 값, 이 값이 기각역에 들어가는지 본다. df = 5 : t의 자유도, p-value = 0.03616 : p의 값, 이 값이 0.05보다 작으면 유의차가 있는 것이다. (지금은 유의차가 나왔다.)

alternative hypothesis: true mean is not equal to 0  #alternative hypothesis : 대립가설, 모평균이 0이 아니다.

95 percent confidence interval: 95 % 신뢰 구간. 신뢰구간은 [-6.6657492, -0.3342508]로 되어있다.

 -6.6657492 -0.3342508

sample estimates: #추정값 , 지금은 표본평균을 추정하고 있으며 ,-3.5 로 되어있다.

mean of x 

     -3.5 

'Data Science > R' 카테고리의 다른 글

시계열분석  (0) 2015.09.25
R 도움말 & 함수 확인  (0) 2015.09.10
R 공부 1회차 Example  (0) 2015.08.31
Posted by MIDDLE
,

mydistance <- function(x,y){

  if (x > y){

    temp <- x-y

    return(temp)

  }

  else{

    temp <- y-x

    return(temp)

  }

}




myVectorSum <- function(){

  x <- c()

  for(i in 1:5){

    x[i] <- i

    

  }

  return(x)

}


# 짝수 더하기

myEvenSum <- function(x){

  y <- 0

  for(i in 1:x){

    if (i%%2 == 0){

      y <- y+ i  

    }

  }

  return(y)

}



#빈칸 NA 제외 처리

myNotNaSum <- function(x){

  y <- 0

  for(i in 1:length(x)){

    if (!is.na(x[i])){

      y <- y+ x[i] 

    }

  }

  return(y)

}


#뉴튼법 대상 추출방법

f <- function (x) exp(x) -2

(result <- uniroot(f, c(0,1)))


#다항식 -2 + 5x -4x^2 + x^3

polyroot(c(-2,5,-4,1))


#미분

f<-expression(a*x^4)

D(f, "x")


#고계미분 결과 a * (4 * (3 * (2 * x)))

DD<- function(expr, name, order =1){

  if(order <1 ) stop("'order' must be >= 1")

  if(order ==1) D(expr, name)

  else DD(D(expr, name), name, order -1)

}

DD(f,"x" ,3)



#수식 이용 미분할때 deriv(~ 수식, 미분할 변수, func=T)

f <- deriv(~ x^2, "x", func=T)

#4 인수에 대한 함수값

#attr(,"gradient")

#x

#[1,] -4 미분한 함수 


# 다변함수 미분

g <- deriv(~ x^2*y, c("x","y"), func=TRUE)

g(2,3)

#[1] 12 인수에 대한 함수의 값

#attr(,"gradient") 인수에 대한 미분한 후의 함수의 값

#x y x ㄹ 일계 미분한 결과로 사용해서 계산한 것(12)과

#[1,] 12 4 y로 일계 미분한 결과를 사용해서 계산한것 (4)


h<- deriv(~ x^2*y*z, c("x","y"), function(x,y,z=4){ })

h(3,2)


#적분 integrate()

f <-  function(x) x^2 # function 선언

integrate(f, 0 ,1)

#원래 R 준비된 함수 적분시에는 따로 새로 함수 정의 필요 X

integrate(sin, 0 , pi)


#dnorm 정규 분포의 밀도 함수

integrate(dnorm, -Inf, 1.96) # 정규분포 밀도함수를 -Inf(-무한대) ~ 1.96 범위에서 적분하고 있다.


#cubature 패키지 안에있는 함수 adaptIntegrate 사용하면 일차원 과 다차원 수치 적분을 할 수 있다.

install.packages("cubature", dep=T) # cubature pacakge 설치

library(cubature)

f<- function(x) cos(x) #1변 함수일때

adaptIntegrate(f, 0, pi/2) #실행

g<- function(x){ # 2변 함수일때

  exp(-(x[1]^2 + x[2]^2) /2) / (2 * pi)

}

adaptIntegrate(g, c(-3,-3), c(3,3)) #인수로 벡터지정 실행



'Data Science > R' 카테고리의 다른 글

시계열분석  (0) 2015.09.25
R 도움말 & 함수 확인  (0) 2015.09.10
R공부 Example 3회차  (0) 2015.09.08
Posted by MIDDLE
,