R 함수
R Functions
1. 기본
1) scan
2) save, dump, load
3) col =
4) stack, aov
5) 데이터 불러오기
csvdata <- read.csv("~/Desktop/rawdata.csv", header = TRUE)
txtdata <- read.table("~/Desktop/rawdata.txt", header = TRUE, sep = "\t")
6) Tabular 데이터 > Row 데이터
- table > dataframe > list > dataframe
2. Charts of 1 Variable 일변량 차트
1) Barplot in 범주형 변수
# horiz = TRUE
# beside = TRUE (가로로 이어서 붙일지) - FALSE면 stacked
2) Pie Charts
옵션) init.angle=90 / 12시에서 방향 시작
3) Histogram
- 히스토그램이 density(proportion) chart일 때 (freq = FALSE)
정규성 / 중요 '편차'을 발견하기 쉬움 (default = Frequencies /TRUE)
- 라인 추가하기
- 아래 lines, rug를 쓰려면 위에 hist함수에서 freq=FALSE를 필수적으로 입력해야함
4) Boxplot
# horizontal = TRUE
3. 정규분포 norm
1) rnorm(n, mean, sd): 난수 생성
2) dnorm(x, mean, sd): 밀도 함수 (Density Function)
3) pnorm(q, mean, sd): 누적함수
- lower.tail = TRUE: 분위수 q를 기준으로 왼쪽 -inf부터 q까지 분포
- lower.tail = FALSE: 분위수 q를 기준으로 q부터 오른쪽 inf까지 분포
4) qnorm(p, mean, sd, lower.tail = TRUE/FALSE)
정규분포를 따르는 모집단에서
특정 누적분포함수 값 p에 해당하는 분위수 q를 알고 싶을 때 사용
4. Statistics for 1 Variable 일변량 기술통계
1) Frequencies
2) Descriptive Statistics
summary( )
3) Single Proportion: 가설검정, 신뢰구간
귀무가설 변경 / 신뢰수준 변경 커맨드 추가
4) Single Mean
5) Chi-squared (One Variation) Test
5. Modifying Data
1) Delete Outliers
- 선형이 아님 (중심부보다 outlier에 영향을 많이 줌)
- Data를 잃지 않고 변형한 케이스
2) Transformation
(1) Logarithmatic
(2) Rank
- Data를 잃음
(3) Dichotomization (이원화)
- Data를 제일 많이 잃음, 심하게 skewed된 데이터에 적합
3) Missing Data 결측값
# Find NA
which(is.na(x1))
# Remove NA
mean(x1, na.rm=TRUE) # Removes NA from calculations
# Replace NA 1: is.na
x2 <- x1 # copy
x2[is.na(x)] <- mean(x2, na.rm= TRUE) # If item in x2 is NA, replace mean
# Replace NA 2: ifelse
x3 <- ifelse(is.na(x1), mean(x1, na.rm = TRUE), x1) # Impute mean
6. Working with the Data File
1) Selecting
2) Analyzing with Subgroups
- aggregate 함수: 그룹 비교 with Function 설정
3) Merging
7. Charts for Association
1) Grouped Bar Charts of Frequencies
2) Bar Charts of Group Means
# 적절한 Bar Chart를 위해선 반드시 데이터를 재가공해야함
3) Grouped Box plots
# 1-2번과 달리 전체적인 맥락과 분포 또한 파악할 수 있음
- 패키지를 써서 / require("RColorBrewer")
col = brewer.pal(8, "Pastel2") 및 outcol = brewer.pal(8, "Pastel2") 옵션을 써서 할 것
4) Scatter plots
- lowess: 가중선형회귀 함수
lowess(y~x,f) / s1=lowess(cars$dist~cars$speed) 등으로 사용
8. Statistics for Association
1) Correlations
- Hmisc 패키지를 이용했음
- 기본 함수는 cor / 패키지함수는 rcorr
2) Bivariate Regression 이변량 회귀분석
3) 2 Sample T-test
t. test를 하기 전에는
먼저 var.test를 하여 두 집단의 분산을 비교한 뒤,
같으면 인자에 var.equal = TRUE를 넣어주고
아니면 FALSE
4) Paired T-test
alternative = "greater" / "less" / c("two.sided")
5) One-factor ANOVA
6) Compared Proportions
- 2개의 벡터를 전제로 한다.
- n벡터: trial의 수 혹은 전체 관찰값
- x벡터: positive outcome의 수
- 이 두 벡터를 prop.test( )로 비교하는 것
7) Cross-tabulations
9. Charts for 3개 이상 Variables 다변량 차트
1) Clustered Bar Charts for means
- 데이터에 바로 barplot을 적용할 수 없으므로 재가공해야함
(1) list( )를 이용하여 data가 올바른 포맷을 가지게 만든다.
-> wool과 tension을 factor로서 인식하게 만든다.
(2) tapply( )를 이용하여 벡터/행렬에 함수를 적용한다.
# 범주형 변수들을 연속형 변수 outcome으로 나타내는 경우 사용
2) Scatter Plots by Groups
# 범주형 변수와 연속형 변수가 섞여 있는데 outcome을 연속형 변수로 나타내는 경우
3) Scatter Plot Matrices
(1) 기본 그래프 pairs( )
- 정보가 너무 밀집되어 있음 (5번째는 범주형 변수이므로 pairs(iris[1:4])로 할 것
(2) panel.hist란 새로운 함수를 생성하여 발전된 그래프 pairs( )
(3) car패키지의 scatterplotMatrix함수를 써서 고급 그래프를 그림
- 4개의 연속형 변수와 1개의 범주형 변수의 관계를 보여줌
- 그룹 속성을 색깔과 형태로 나타냄
- 범례 추가
- 각각의 plot에 회귀직선 추가
- 각각의 plot에 CI를 추가하면서 스무스하게 만듦
- 각각의 변수에 대해 커널밀도추정치와 rugplot을 제공
10. Statistics for 3개 이상 Variables 다변량 기술통계
1) Multiple Regression
(1) 기본
- 같이 쓰는 함수들:
anova( ): 회귀모형에 대한 ANOVA table
coef( ): 회귀모형의 '계수' 제공
confint( ): CI
resid( ): case-by-case 잔차 제공
hist(residuals( ) ): 잔차들의 히스토그램 제공
(2) 후진제거법 Backwards Removal
2) Two-factor ANOVA
(1) 방법 1
(2) 방법 2
3) Cluster Analysis
(1) kmeans clusplot
- cluster 패키지 이용
(2) Hierarchical Clustering (Dendrogram 만들기)
기본 - plot( )
- 바로 Raw dataframe에 적용 불가 -> Distance / Dissimilarity Matrix 필요
-> dist( ) 함수로 적용 -> plot으로 마무리
색깔그룹화 - cutree( )
- cutree( ) 함수로 색깔그룹화 할 수 있음 (단, 어디에서 자를지 알려줘야한다.)
-> k = 3 (몇 번째 그룹인지 알려줌) or h = 230 (그래프의 Height 수치를 알려줌)
4) Principal Components and Factor Analysis
(1) PCA: 주성분 분석
(2) FA: 요인분석
- 여기서 p< .05가 아니라 p> .05를 찾아야 할 것이다.
데이터와 일치하는 쌍을 찾아야 하기 때문이다.
결과 중 하나를 보이면,
댓글
댓글 쓰기