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 |