# f(x) = x^2 + sin(x) 에대해 f'(0)구하라

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

f(0)


#f(x)= e^(-x^2)에대 0부터1까지 0부터 무한대 적분

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

integrate(f,0,1)


#행렬 작성

matrix(1:6, nrow=2, ncol=3)

matrix(1:6, nrow=2, ncol=3 , byrow = T)


#행렬 꺼내기

x <-matrix(1:6, nrow=2, ncol=3 , byrow = T)

x[1, 2] #1 행 2열

x[c(1,2) ,2] #1,2행에서 2열 성분표시

x[2 ,c(1,2)] #2행에서 1,2열 성분표시


#논리 벡터를 이용한 데이터 출력or 미출력

x[-1, c(T,F,T)]


#행렬의 결합

x <- rbind(c(1,2,3), c(4,5,6)) #rowBind

x <- cbind(c(1,2,3) , c(4,5,6)) #colBind


#행렬 계산

a<- matrix(1:4, 2,2) # 22행렬

b<- matrix(0:3, 2,2) # 22행렬


#전치 행렬

t(x)


#제로 행렬

diag(0,3)


#전치 행렬

diag(1:3,4)


#연립 방정식의 해

a <- matrix(c(0,1,2,3,4,5,6,7,9), 3, 3) #     3y + 6z = 1

b<- matrix(c(1,0,-2))                   # x  +4y + 7z = 0

solve(a,b)                              #2x  +5y + 9z =-2


#역행렬 구하기

#A. b=x b에 A의 차수 의 단위 행렬 지정 후 solve()로 풀면 A의 역행렬 구할수 있다.

A <- array(runif(9),c(3,3))

B <- solve(A)#방법1

a <- matrix(c(0,1,3,4),2,2)

b <- matrix(c(1,0,0,1),2,2)

solve(a,b)#방법2


#일반 역행렬

A <- matrix(c(1,2,3,4,5,6,7,8,9),c(3,3))

B <- solve(A)

#Error in solve.default(A) : 

#  Lapack routine dgesv: system is exactly singular: U[3,3] = 0

library(MASS) #library MASS 사용후 ginv(A)로 사용

B<-ginv(A)

B



#크로스 곱

#crossProd() 사용하면 A와 B의 크로스곱 t(A) %*% B 를 구할수 있다.

a<- matrix(c(1,2,3,4))

b<- matrix(c(0,-1,-2,1))

crossprod(a,b)


R에서 행렬이란

행과 열이 있는 2차원 배열을 가르킨다. 일반적으로 말하는 행렬은 각 요소가 수치로된 행렬만 다루지만, R에서의 행렬은 2차원 배열이므로 논리값이나 문자열 등을 요소로 행렬을 만들 수도있다. 따라서 행렬을 만드려면 matrix() 함수를 사용한다고 설명했지만 배열을 생성하는 의미에서는 array()를 사용해도 만들수 있다.



#image()이용 행렬 이미지 그림표시 바둑판 만들기

x <- matrix(rep(0:1, 81),9,9)

image(x, col=c(5,9))



시뮬레이션 

이장의 목적은 R로 간단한 시뮬레이션을 해본다. R에서는 간단하게 프로그램을 작성할 수 있으므로 시뮬레이션 상황만 설정하면 나머지 과정은 간단하며, 쉽게 시뮬레이션 실험을 할 수 있다. 여기서는 다음과 같은 흐름으로 몬테카를로 시뮬레이션을 소개한다.


시뮬레이션이란 모의실험을 의미한다. 실제로 실험 할 수 있을때는 직접해보는 것이 가장 손쉽고 빠르다. 실제로 실험하기에는 시간과 비용이 지나치게 들거나 실험환경을 설정하기 어려울때 결과 예측이 가능하면 실제로 실험을 할 필요가 없지만, 문제가 복잡해서 결과 예측이 곤란할때는 시뮬레이션을 선택할 수있다. 이장에서는 컴퓨터 시뮬레이션에 관해 설명하고, 이것을 시뮬레이션이라고 부르기로한다.


시뮬레이션 순서 

1. 시몰레이션의 목적을 확인하고 상황 설정을 한다.

2. 시뮬레이션을 하기위해 어떻게 하면 좋을지 실제 순서(알고리즘) 결정한다. R에서는 순서가 정해지면 함수를정의 한다.

3. 시뮬레이션 결과를 출력한다.

4. 결과를 정리하고 알아낸 내용을 검토한다.

5. 시뮬레이션 결과 분석에 필요한 통계처리를한다.

R에서는 실험 하는 작업순서를 프로그램 하게된다.

예를들어 동전 한개를 10회던졌을때 앞면이 몇번나오는지를 보기위해 다음순서로 진행한다.

1. 상황설정 : 동전 한개를 10회던진다. -> 동전을 한번던졌을때 앞면은 1/2 확률로 나온다 가정한다.

2. 순서설정 : 동전을 1회던진다 -> 결과를 기록한다. 컴퓨터로 10회 반복한다. R에서는 다음순서로 처리한다.

- 동전을 던진다. = 난수를 발생한다.

- 결과가 앞면이면 앞면이 나온 횟수를 카운트하는 함수를 만든다.

- 동전을 10회던진 후 앞면이 나온횟수를 출력한다.

3. 시뮬레이션 실행 = R함수 실행

4. 함수 실행 결과를 확인 



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
,

- 탐색적 데이터 분석

- 탐색적 데이터 분석과 보고를 위한 시각화

- 대시보드와 척도의 관리

- 비즈니스에 대한 영감의 발견

- 데이터 주도 의사결정

- 데이터공학/ 빅데이터(맵리듀스, 하둡, 하이브, 피그)

- 데이트 수집

- 데이터 파이프라인 구축( 로그 -> 맵리듀스 -> 데이터세트-> 다른 데이터와의 결합-> 맵 리듀스-> 스크래프 데이터-> 결합)

-(존재하는 상품 용법을 설명하는대신) 상품의 개발

-해킹

-특허 출원

-수사 업무

-미래 행동이나 성과예측

- 보고서, 발표자료 , 저널에 결과 기고

- 프로그래밍(R, 파이썬, C, 자바 등)

- 조건 확률

- 최적화

- 알고리즘, 통계적 모형, 기계학습

-스토리를 말하고 해석하기

-좋은 질문하기

-조사

-연구

-데이터로부터 추론하기

-데이터 상품 개발

- 대규모 데이터 프로세싱, 변형, 분석방법 도출

- 온전성 검사

- 영역 전문가와 협력 ( 혹 영역 전문가 되기)

- 실험의 설계및 분석

-데이터에서 상과능ㄹ 발견하고 인과성 확립하기


를 포함하여 모범 규준ㅇ들을 사용하여 데이터와 함께 풀 수 있는 모든 문제의 공간을 포함하는 영역 포괄

데이터 과학이 어디서 어떤영역에서 등장하는가는 쟁점이 아니다 . 오히려 그것을 알고리즘, 코드 ,그리고 데이터에 해법공간을 가지고 있는 문제공간으로 정의하는 것이 필요하다.



'Cloud Service' 카테고리의 다른 글

Cloud 사용 기술들 정리  (0) 2015.04.23
Cloud 서비스  (0) 2015.04.13
Posted by MIDDLE
,