기본적 자료 분석
다중변수는 열이 두 개 이상인 자료를 말한다. 이때 열을 필드, 변수라고도 하고, 따라서 열이 두 개 이상인 자료를 다중변수라고 한다. 보통 매트릭스나 데이터프레임을 활용하여 분석한다.
str 함수를 통해 행과 열의 개수, 각 열의 이름과 그 열에 들어있는 자료의 자료형, 대략적인 자료 내용을 확인할 수 있다.
str(data_name)
iris 데이터를 확인해본다면 아래와 같이 나온다.
'data.frame': 150 obs. of 5 variables:
$ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
$ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
$ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
$ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
$ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
전체적인 정보 중에 필요한 정보만 보고 싶다면 다음 함수를 이용하면 된다.
dim(data_name) # 데이터 차원
nrow(data_name) # 행 갯수
ncol(data_name) # 열 갯수
rownames(data_name) # 행 이름
colnames(data_name) # 열 이름
head(data_name) # 데이터 앞부분 샘플
tail(data_name) # 데이터 뒷부분 샘플
다중변수 시각화
- 산점도
산점도는 두 변수의 분포를 확인할 수 있는 그래프이다. 즉 x 축과 y 축에 각각 변수를 놓고, 두 변수 간에 관계를 확인할 수 있는 그래프이다. plot 함수를 이용하여 그릴 수 있다. iris 데이터셋의 Sepal.Length 와 Sepal.Width 를 산점도로 그리려면 아래와 같은 코드를 이용할 수 있다.
plot(iris$Sepal.Length, iris$Sepal.Width, main="iris", xlab="Length", ylab="Width", col="#0F7301", pch=2)
main 은 그래프 이름, xlab 은 x 축 이름, y 축은 y 축 이름, col 은 색상, pch 는 점의 모양이다.
그려진 그래프는 아래와 같다.
iris 데이터 셋의 각 종에 대해서 점의 모양과 색을 달리할 수 있다. 즉 그룹에 대해서 색과 모양을 달리하여 그룹의 특징을 알아볼 수 있다. 코드는 아래와 같다.
point <- as.numeric(iris$Species)
plot(iris$Sepal.Length, iris$Sepal.Width, main="iris", xlab="Length", ylab="Width", col=c("#0F7301", "#F07777", "#9F0192")[point], pch=c(point))
point 라는 임의의 변수를 만들어서 각 종에 대한 정보를 숫자형으로 바꿔 저장해준 후 색과 점 모양에 대해 적용해주면 된다. 결과는 아래와 같다.
참고로 데이터를 설정하는 것은 아래 네 가지 방법 모두가 동일하다.
plot(iris$Sepal.Length, iris$Sepal.Width)
plot(iris[, 1:2])
plot(iris[c("Sepal.Length", "Sepal.Width")])
plot(Sepal.Width~Sepal.Length, data=iris)
scatter.smooth 함수를 통해 부드러운 추세선을 추가해줄 수 있다. plot 함수 뒤에 사용해주면 된다.
plot(iris$Sepal.Length, iris$Sepal.Width, main="iris", xlab="Length", ylab="Width", col=c("#0F7301", "#F07777", "#9F0192")[point], pch=c(point))
scatter.smooth(iris)
결과는 아래와 같은데, 앞서 plot 함수에서 설정한 색, 모양 설정이 날아간다.
- 다중변수들 간 산점도
앞서 pot 을 통한 산점도는 두 변수 간 산점도만 나타낼 수 있었다. 다중변수들에 대해 모든 산점도를 보고 싶다면 pairs 함수를 이용하면 된다.
pairs(iris, main="iris")
결과는 아래와 같다.
- 상관분석
회귀분석을 통해 회귀선을 도출하고, 상관계수(참고 링크)를 통해 두 변수간 관계를 확인할 수 있다. 회귀분석은 lm 함수를 통해 진행한다.
lm(Petal.Length~Petal.Width, data=iris)
위 코드의 결괏값을 abline 함수에 넣어주면 회귀선을 그려준다. 단 plot 함수를 통해 먼저 산점도를 그려놔야 한다.
plot(Petal.Length~Petal.Width, data=iris)
abline(lm(Petal.Length~Petal.Width, data=iris))
결과는 아래와 같다.
상관계수는 cor 함수를 통해 구할 수 있다.
cor(iris[, 1:4])
iris 데이터셋에 대한 결과는 다음과 같다.
Sepal.Length Sepal.Width Petal.Length Petal.Width
Sepal.Length 1.0000000 -0.1175698 0.8717538 0.8179411
Sepal.Width -0.1175698 1.0000000 -0.4284401 -0.3661259
Petal.Length 0.8717538 -0.4284401 1.0000000 0.9628654
Petal.Width 0.8179411 -0.3661259 0.9628654 1.0000000
- 선그래프
만약 다중변수에 대한 분석을 할 때 시계열 자료나 패널 자료라면 선그래프를 통해 추세를 확인하는 것이 좋다. 선그래프는 plot 함수를 사용하면서 type 을 "l" 로 설정하면 된다. 즉 아래와 같이 설정하고 사용하면 된다. 데이터는 R 기본 데이터셋 중 시계열 자료인 AirPassengers 를 사용하였다.
plot(AirPassengers, type="l", lty=2, lwd=2)
lty 는 선의 종류, lwd 는 선의 굵기 이다. 결과는 아래와 같다.
단일변수를 사용하였지만, 앞서 plot 을 사용할 때와 마찬가지로 x 축과 y 축을 각각 설정하는 식으로 사용할 수도 있다.
여러 개의 데이터에 대해서 같은 그래프에 그릴 수 있다. 예를 들어 ggplot2 패키지의 economics 데이터를 이용하여 pce 데이터와 unemploy 데이터를 같이 그려보려면 다음과 같은 코드를 이용할 수 있다.
plot(economics$date, economics$pce, type="l", xlab="Date", ylab="PCE", col="blue", ylim=c(0, 15000))
lines(economics$date, economics$unemploy, type="l", col="black")
ylim 을 이용하여 그래프 범위를 설정하였고, 첫 그래프를 제외하고는 lines 함수를 이용하여 그래프에 삽입하여 주면 된다. 결과는 아래와 같다.
- 추가 정보
만약 여러개의 그래프를 한번에 그리고 싶다면 par 함수를 통해 R-Studio 의 그래프 창을 여러개로 분할할 수 있다. 예를 들어 2X3 로 총 6개의 그래프를 화면에 출력하고 싶다면, 아래와 같은 코드를 이용할 수 있다.
par(mfrow=c(2, 3))
이 코드를 실행한 후에 여러 개의 그래프를 출력하면 동시에 출력된다. 원래대로 돌리고 싶다면 1X1 로 다시 만들면 된다. 즉 아래 코드를 이용하면 된다.
par(mfrow=c(1, 1))
'Language > R' 카테고리의 다른 글
[R] 결측값(missing value)과 특이값(outlier) 처리 (0) | 2024.11.18 |
---|---|
[R] 단일변수 탐색적 자료 분석(EDA) (0) | 2024.10.28 |
[R] which 를 이용한 데이터 위치 확인 (0) | 2024.10.27 |
[R] for 와 while 을 통한 반복문 및 apply (0) | 2024.10.27 |
[R] 데이터 파일과 사용자 정의 함수 및 변수 불러오기 (0) | 2024.10.14 |