a:anytype의 object

x:vector

M:matrix

d:data frame

T,F란, T나 F중 1개 지정

ts:time series object





*Basic

-ls()

-메모리상 변수들 출력

-=, <-

-우측을 좌측에 할당

-class(a)

-input의 classtype을 뱉는다.

-logical, numeric, character, data frame, ts, formula, lm

-str(a)    

-object의 구조를 요약한다.

-input의 classtype, size, 내용을 뱉는다.

-for(i in 1:1000){~~~}

-함수만들기

-함수명.fun=function(input){~;,~;,...,return(~)}

-library(~)

-패키지 ~를 불러들인다. 따라서 패키지 내 함수 사용가능

-setwd(C:/data)

-작업 디렉토리 설정하는 명령어

-names(x)

-x에 있는 variables의 list가 나온다.

-(=NULL)

-NULL을 할당하면은 clear하자는 뜻

-set.seed(숫자)

-random number를 생성하는데 있어서, 무작위 추출로 얻어낸 수를 똑같이 반복적으로 얻을 필요가 있는데, 그때 사용



*is

-isTRUE

-is.ts


*as

-as.numeric

-as.vector

*수열, vector만들기

-from:to

-1:3

-c()

-c(1,2,3)

-seq()

-seq(from,to,by=n)

-seq(1,3)

-seq(from,to,length.out=m)

-수열 index

-x[n]

-x[1:3]

*Matrix만들기

-M=cbind(x1,x2)

-M=rbind(x1,x2)

-M=matrix(x,nrow=n,ncol=m, byrow=T,F)

-M=matrix(x,nrow=n,ncol=m, bycolumn=T,F)

-M=matrix(scan(),nrow=n,ncol=m, byrow=T,F)

-M=matrix(scan(),nrow=n,ncol=m, byrow=T,F)    

-M[1,2]

-M[,2:3]

-M[2:3,2:3]


*Matrix함수    

-dim(M)

-(nrow,ncol)을 뱉는다.

-M1%*%M2

-t(M)

-det(M)

-diag(M)

-대각성분을 원소로하는 vector을 뱉는다.

-solve(M)

-inverse matrix를 뱉는다.

-eigen(M)

-eigenvalues와 eigenvectors을 갖는 d를 뱉는다.


*vector함수

-sum(x)

-prod(x)

-diff(x)

-cumsum(x)

-length(x)

*data frame

-생성

-d=data.frame(x1,x2)

-data(내장된data)

-불러오기

-d=read.csv("파일명.csv")

-csv란, comma separated value

-메모장에서는 1행엔 변수명, 이후 행부턴 데이터값을 ,로 분리 입력

-엑셀에서도 1행엔 변수명, 이후 행부턴 데이터값을 한 칸에 1개->CSV로 저장

-d=scan(file="c:\Rdata\bok.txt)

-vec를 불러들일 때 편함

-d=read.table(파일경로, header, sep, row.names, col.names, na.strings, stringsAsFactors)

-header:파일의 첫행이 변수명이었다면, header="T"로 설정하여 variables로 받아들여서 data.frame구축가능

-T로 하지 않는다면, 첫행을 data로 받아들임

-sep:데이터 구분 기호, 설정하지 않는다면 띄어쓰기나 tab으로 받아들임, sep=","

-row.names:각 행의 이름을 입력하는 인수, 벡터 형식으로 열 이름을 지정하거나, row.names="1"을 입력하면 데이터의 첫 열을 행이름으로서 사용하겠다는 뜻

-변수

-x1,x2

-각 x의 사이즈가 곧 observations의 횟수

-d$x로 data frame의 변수(vector)에 접근가능

-attach(d)하면 d의 변수를 직접 접근가능, 즉 attach(d)한 후에 x1치면 x1내용 바로 보임

-detach(d)하면 attach 풀어줌(항상 attach로 데이터사용했으면 detach해주자, 그래야 변수명들이 서로 충돌 ㄴㄴ함)

-접근

-d[1:3,]

-d2=subset(d1,조건)

-열 추가

-d=data.frame(d,x3)

-d=cbind(d,x3)

-저장

-write.csv(d,"파일명.csv",row.names=T,F)

-다루기

-with(trees,Volume+Girth+Height)

-trees$를 반복적으로 안적어도 되게끔 해줌

*TS

-ts object만들기

-name.ts=ts(d$variable, start=c(year,month), frequency=n)

-start(ts)

-end(ts)

-frequency(ts)

-name2.ts=window(name1.ts,start=c(year,month),end=c(year,month))로 subset만들 수 있음

-lag(name.ts,-1)이란 원래 ts를 1달 뒤로 미루는 것(lag)을 얻음

-diff(name.ts)란 차분을 얻는것(즉 name.ts - lag(name.ts,-1)을 얻음)


*통계적 요약, 정리

-head()

-tail()

-mean()

-mean(data,trim=0~0.5)

-rep(x,times=n)

-rep(x,each=n)

-summary()

-min()

-max()

-median()

-quantile()

-quantile(x,c(0.25,0.75))

-var()

-표본분산으로서 구한다. 즉 분모가 n이 아니라 n-1로 계산함

-sd()

-표본표준편차로서 구한다. 즉 분모가 n이 아니라 n-1로 계산함

-IQR()

-4분위수범위, 즉 0.75%의 quantile - 0.25%의 quantile값 나옴

-cov()

-cor()

-sort(x)

-x를 순서대로 나열함(오름차순으로)


*표와 그래프

-도수분포표(frequency table)

-table(cut(x,seq(from,to,by=n)))

-cut(x,seq)란, x에서 seq의 범위로 잘라서, 범위내에 데이타가있는 그 범위만을 가져옴

-여기서 seq는 도수범위 자르는 기준

-히스토그램(histogram)

-hist(x,seq(from,to,by=n),col="orange")

-seq은 가로축에 올 것의 범위를 나눔

-hist(x,seq(from,to,by=n),col="orange",probability=TRUE)

-probability=TRUE하면, 세로축이 frequency가 아니라, Probability가 나온다.

-hist(~~,probability=TRUE)한 다음에 lines(density(Volume))하면, pdf를 곡선으로 hist에 덮혀그려준다.

-산점도(scatter plot)

-plot(가로축에 올 x1, 세로축에 올 x2, col="red", main="Title name", add=T, type="p"

-main은 그래프이름, add는 기존그래프에 덮혀그릴 것인지 여부,  type은 데이터 표시방법(p는 점으로 표시)


-시계열그림(time series plot)

-plot(ts, col="blue")

-박스플랏(box-plot)

-boxplot(x)

-outlier, 최솟값, (Q1-1.5IQR,Q1중에서 최솟값), Q1, Q2, Q3, (Q3,Q3+1.5IQR 중에서 최댓값), 최댓값을 알 수 있음

-boxplot(variable1~variable2, data=d), variable1을 variable2(명목형변수)에 따라 boxplot해줌

-명목형변수란, chr, 먹이종류 등으로 type을 결정하는 변수

-비교산포도(pairs)

-pairs(x)

-x내의 variable들을 짝지어 산포도를 한번에 다 그린다.

-stem(x)

-x의 앞자리수|뒷자리수,~~~

-각 앞자리수를 갖는 수들을 알 수 있다. 즉 앞자리수를 기준으로 분류를 하는 방법임

-colors()

-사용할 수 있는 색들 모음이 나온다.

-Q-Q Plot

-sample이 어떠한 정규분포를 따르는지 확인하는 용도

-qqnorm(volume)

-list를 뱉고, $y는 sample,(즉 여기선 Volume)을 갖고 $x는 해당하는 정규분포의 quantile을 갖는다.

-plot을 자동으로하는게 default로 설정되어있고 (x,y) 그려줌

-그래프가 y=x모양에 가까울수록 sample이 정규분포를 따르는 것에서 얻어왔을 가능성이 높은 것

-qqline(volume)을 치면 y=x모양 그래프를 그려줘서 비교가능케해줌


*확률계산과 확률표본의 추출

-정규분포

-F(2)구하는 법:pnorm(2,평균,표준편차)

-f(2)구하는 법:dnorm(2,평균,표준편차)

-표본1000개 얻는 법:rnorm(1000,평균,표준편차)

-분위수 구하는 법:qnorm(0.975,평균,표준편차)

-CSD분포

-F(2)구하는 법:pchisq(2,자유도)

...

ND,CSD,TD,FD등 가능

-sample()

-sample(height,size=10)

-모집단(height)으로부터 표본을 비복원추출할 수 있다.


*OLS하는 법

-regression식만들기

-eq=종속변수~독립변수1+독립변수2+독립변수3

-자동으로 constant를 regressor로 포함함

-eq=종속변수~-1+독립변수1+독립변수2+독립변수3 

-constant를 regressor에 포함시키지않는 방법

-regression하기

-m=lm(eq,data=d)

-기본적으로 계수들을 가르쳐주고

-summary(m)하면 각종 정보들을 모두 알 수 있다.

-m의 variables로는

-coefficients

-residuals

-fitted.values

-rank

-독립변수 개수

-df.residual

-n-k, 즉 sample size-regressors개수

-lm(종속변수~독립변수(명목변수), data=d), dummy variables를 이용한 명목변수의 regression을 알아서 해준다.

-vcov(m)하면 OLS estimator의 covariance matrix를 구해준다.

-sqrt(diag(vcov(m)))하면 SE(b)들을 알 수 있다.

-confint(m,level=0.95)하면 신뢰수준 95%의 신뢰구간을 얻을 수 있다.(기본적으로 H0:각 계수=0 으로 생각하고 진행됨)

-anova(lm(~))

-analysis of variance table이 나온다.

-m.summary=summary(m)

-m.summary의 variables로는

-coefficients

-r.squared

-adj.r.squared

-fstatistic

-H0가 linear하게 주어진다면(여러개로)

-library(car)이용

-R, r만들기(H0표현용)

-linearHypothesis(m,hypothesis.matrix=R,rhs=r)이용, FD이용해서 test

-linearHypothesis(m,hypothesis.matrix=R,rhs=r,test="Chisq")하면 CSD이용해서 test


*One-Sample T-test

-검정의 목표

-H_0를 기각하고자하는게 testing하는 사람의 목표

-검정의 과정

-H_0과 H_1(tester의 목표)를 설정한다.

-단측검정인지 양측검정인지 구분, 단측검정이라면, H_0을 기각할 확률이 높다. 

-몇가지 지표

-level of significance:H_0가 참일 때, H_0을 기각할 확률

-p-value:H_0가 참일 때, 얻은 estimate의 값(v1)이 있을 때,

-양측검정일 땐 P[|estimator|>v1]

-단측검정일 땐 P[estimator>v1]을 가리킨다.

-즉 p-value는 v1이 H_0을 지지하는 정도이다. 0<=p<=1인데, p가 1에 가까울수록 H_0가 기각될 확률은 작은거임

-p-value<level of significance인 경우, H_0을 기각함

-H_0을 accept하더라도, 사실 진짜 H_0가 참인진 모름

-power:H_0가 거짓일 때, H_0을 기각할 확률

-모집단의 정규성 검정

-Shapiro-Wilk Normality Test->주어진 sample을 통해 모집단이 정규성이있는지부터 확인

-없다면, log,sqrt,1/x 등 변환해서 얻은게 정규성띄는지 확인

-Shapiro-Wilk Normality Test는 H_0:sample이 정규분포인 모집단에서 얻어진 것이다., H_1:모집단이 정규분포가 아니다.

-shapiro.test(x)하면 됨

-p-value가 유의수준 0.05보다 크다면 정규분포로 얻은 것이라 받아들이자.

-모집단의 정규성 검정이 통과되면 T-test이용

-t.test(x,H_0)

-t.test(x,mu, conf.level=0.99, alter="greater","less")

-conf.level조절 가능

-alter를 안쓰면 양측검정, 쓰면 단측검정


*Time Series Analysis

-acf(ts, lag.max, type, plot)

-lag.max:최대 시차 값

-type="covariance", "correlation", "partial"

-plot="T", "F", correlogram을 출력할 것인지 여부

-그려보고 나서 ACF-LAG, ACF가 너무 서서히 감소한다면, weak stationary가 아닐 확률이 높아진다.

-arima(ts, order, include.mean)

-입력된 ts를 AR,MA,ARMA 로 근사(modeling)해주는 명령어

-ts:univariate ts입력

-order:order=c(p,d,q), p는 AR의 차수, q는 MA의 차수

-include.mean:모형에 intercept을 포함할지 여부

-

-arima.sim(model,n,rand.gen)

-특정 Time Series을 따르는 data만들어줌

-model=list(~~)

-~~에는 ar=c(,,,)(AR모형의 벡터계수), ma=c(,,,), order=c(p,d,q) 택해서 넣는다.

-n:생성한 Time Series data개수

-rand.gen:오차항의 형태를 결정, 기본값은 rnorm

-random walk 만들기

-r.walk=rnorm(100,mean=0.5,sd=sqrt(2))

-평균이 0.5, 표준편차가 sqrt(2)인 정규분포에서 표본을 100개 만든다음, cumsum(r.walk)하면 random walk를 얻을 수 있다.



'기타 > R,Latex,발표,Research' 카테고리의 다른 글

교내 Latex강좌 강의 정리  (0) 2014.03.19
[발표]지켜야할 것들  (0) 2013.07.04
[영어]Research Papers  (0) 2013.06.24

+ Recent posts