본문 바로가기
WBS - 2024 Fall/포트폴리오 매니지먼트

(PF Mgmt #2) "R 기초 - 그 1 -

by fastcho 2024. 10. 11.
반응형

"R 기초 - 그 1 -  

시작 → 프로그램"

R의 프롬프트( > )에 "q( )"를 입력하면 세션이 종료됩니다.

"설치 디렉토리의 etc에 있는 Rconsole 파일의 70번째 줄에서 language = EN으로 설정하면 메시지가 영어로 변경된다."

 

인터프리터형 언어

  • 프롬프트에 함수를 입력하면 결과를 얻을 수 있다 
  • 함수 사용법을 모를 때는  
    > help(log) 또는 > ?log 를 입력하면 온라인 도움말을 사용할 수 있다.

형(정수, 실수 등)에 구애받지 않고 혼합 사용 가능하지만, 문자열과 숫자는 구분해야 한다.

x에 6을 대입(선언 불필요)하고, 변수명만 입력하여 내용을 표시. y에 7을 대입.

+, -, *, / 는 일반적으로 사용할 수 있다.

계산 결과를 z에 대입.

한번 사용한 변수라도 내용 변경, 형 변경 모두 가능.

 

 

객체 저장  

  • R에서는 데이터나 함수 모두를 객체라고 부른다  
    → R은 객체 지향 언어*이다  
  • 객체는 세션 종료 시 저장해두면, 이후에도 계속해서 사용할 수 있다.

*데이터와 그 데이터를 조작하는 절차를 객체라는 하나의 단위로 통합하여, 객체의 조합으로 프로그램을 작성하는 프로그래밍 기법. 

프로그램의 일부를 재사용하기 쉬운 등의 장점이 있다.

대표적인 객체 지향 언어로는 C 언어에 객체 지향적인 확장을 추가한 C++이 잘 알려져 있다.

 

오브젝트와 프레임

 

 

R에서의 형(Mode)  

  • 빈 값(NULL) "null"  
  • 논리값 "logical" (→ TRUE 또는 FALSE)  
  • 실수 "numeric"  
  • 복소수 "complex"  
  • 문자열 "character"

 

 

원자 오브젝트에서 복잡한 데이터로  

  • 원자 오브젝트를 결합하여 더 복잡한 대상을 표현한다.  
  • 정의된 클래스에 대해 함수를 정의한다.
벡터, 행렬이
시계열 속성
(시작 시기 등)을
가질 경우
시계열 ts() 자기상관계수,
시계열 모델
벡터가 행 수,
열 수라는 추가적인
속성을 가질 경우
행렬 matrix() 역행렬, 고유값
여러 실수의 집합 벡터 c() 최대값, 최소값, sort
원자 오브젝트
(atomic object)
실수  

 

 

 

벡터의 표현

함수 c( )는 인수를 결합하여 벡터로 만듭니다.  
이 경우 길이가 3인 벡터가 생성됩니다.  
문자열 벡터도 가능합니다.

함수 log()에 인수가 주어졌을 때, 각 요소에 대해 로그를 계산합니다.  
이 경우, x에 대입도 이루어지며 값은 남아 있습니다.  
'n1:n2'라는 표기법으로 n1에서 n2까지의 수열을 생성할 수 있습니다.  
인덱스 집합 벡터 등을 생성할 때 유용합니다.  
연산자 ^는 거듭제곱 계산을 수행하며, 이 또한 각 요소에 적용됩니다.  
연산자 +는 모든 요소에 동시에 3을 더할 수 있습니다.  
다른 형(벡터와 스칼라) 간에도 연산이 가능합니다.

 

 

 

벡터와 함수

 

 

벡터의 요소의 지정

 

 

 

그 외의 벡터에 관한 함수

 

행렬의 표현  

  • 데이터 자체는 내부적으로 벡터로 처리됩니다.  
  • 2차원 배열로서, 행 수와 열 수를 지정해 줍니다.  
  • 오브젝트의 속성으로 행과 열의 이름을 가질 수 있습니다.

 

 

행렬의 요소의 지정

 

 

 

 

함수 dimnames()의 사용

이름이 없는 상태에서는 기본적으로 행과 열 번호가 표시됩니다  
(리스트가 무엇인지는 다음 시간에 설명합니다.)  
함수 dimnames()를 사용하여 행이나 열에 이름을 붙일 수 있습니다.

var(x)는 x가 행렬일 때 분산-공분산 행렬을 계산합니다.  
각 열에 이름이 있으면 결과에도 이름이 자동으로 상속됩니다.

dimnames()를 대입하지 않고 사용하면 행과 열의 이름(속성)을 표시해줍니다.  
[[1]]은 첫 번째 축(행 방향), [[2]]는 두 번째 축(열 방향)의 속성을 나타냅니다.

 

행렬에 관련된 연산자와 함수  

기타 QR 분해 **qr()**, 코레스키 분해 **chol()**, 특이값 분해 **svd()** 등의 함수가 행렬에 관련됩니다.

 

 

 

파일에서 데이터 입력 (1)  

  • 함수 scan()을 사용합니다.

 

파일에서 데이터 입력 (2)  

  • scan() 함수를 사용하여 CSV 형식의 데이터를 읽어들입니다.  
  • 파일 이름은 자신의 환경에 맞게 변경합니다.

 

 

파일에서 데이터 입력 (3)  

  • 표 형식의 데이터가 주어지면 read.table() 또는 read.csv() 함수를 사용할 수 있습니다.

 

 

 

그래픽스  

  • 고수준 그래프 함수 (high-level plots)  
    • 함수: plot(), hist(), pie(), barplot() 등  
    • 그 외의 함수는 도움말의 'High-Level Plots'을 참조    
  • 저수준 그래프 함수 (low-level plots)  
    • 그래프에 선을 추가하거나, 후에 점을 찍는 등의 작업  
    • abline(), title()

 

 

 

 

산포도 plot( )

 

 

히스토그램 hist( )

 

 

과제 1. R에서 처리 실행  

  • CSV 형식의 파일을 읽어와 R 오브젝트로 만든다.  
  • (1) 매출액, 당기순이익의 평균과 표준편차를 구한다. (mean(), sd() 함수 사용)  
  • (2) ROE를 계산하고, 히스토그램을 그려본다. (hist() 함수 사용)  
  • (3) 전기 기기(일경 업종 코드 123221~123229)에 대한 ROE 평균을 계산한다.


2번 ROE 계산은 ROEt = NIt / BVt 로 해도 무방

원래는 BVt-1로 해야함

2번은 outlier를 어떻게 처리할지 고민

 

워드로 하던지 pdf로 제출 

반응형