ADsP 실전문제 풀이

본 토픽은 현재 준비중입니다. 공동공부에 참여하시면 완성 되었을 때 알려드립니다.

1~24

3번 (데이터마트 - 데이터 관리 - 결측값 처리)
#공기 질 데이터를 불러옵니다. 내장 데이터라 따로 라이브러리를 불러오지 않아도 됩니다.
> data("airquality") 
#head()명령을 써서 첫 6열의 데이터를 봅니다.
> head(airquality) 
  Ozone Solar.R Wind Temp Month Day
1    41     190  7.4   67     5   1
2    36     118  8.0   72     5   2
3    12     149 12.6   74     5   3
4    18     313 11.5   62     5   4
5    NA      NA 14.3   56     5   5
6    28      NA 14.9   66     5   6

# NA라 되어 있는 부분을 결측값이라 부릅니다. 비어버린 값이라는 뜻인데요.
# 그날 비가 내렸던 센서가 고장났던가 해서 값을 측정하지 못하고 빈칸으로 남겨둔 것이죠.
# 어쨌든 정답은 na.omit() 입니다. 결측값이 들어간 데이터를 다 지워버립니다.
> clean_airquality = na.omit(airquality) 

#다시 head()명령을 쓰면 결측치가 사라진 걸 확인할 수 있습니다.
> head(clean_airquality) 
  Ozone Solar.R Wind Temp Month Day
1    41     190  7.4   67     5   1
2    36     118  8.0   72     5   2
3    12     149 12.6   74     5   3
4    18     313 11.5   62     5   4
7    23     299  8.6   65     5   7
8    19      99 13.8   59     5   8

5번 (R프로그래밍 기초 - R기초)

10번 (4장 통계분석 - 주성분분석)

Boston은 영국 보스턴의 집값에 대한 데이터입니다. 

주성분 분석을 할 때는 princomp() 함수를 사용합니다. 결과를 보고 싶다면 이 모델을 summary()함수 안에 넣으면 됩니다.

주성분은 시험에 자주 나오니, 자세히 설명해보겠습니다. 주성분 분석은 데이터의 변수들을 '주성분'이라 부르는 대표값으로 축약하는 방법입니다. 변수 간에 교호작용, 즉 상관관계가 있을 때 사용하는데요. 알기 쉽게 예를 들어보겠습니다.

여기 국어, 수학, 영어, 물리, 사회 성적을 기록한 데이터가 있다고 합시다. 과목 = 변수는 5가지 입니다. 그런데 잘 생각해보면 IQ 높던지 성실하던지 간에 국어를 잘 하는 학생은 대체로 수학도 잘 하는 경향이 있습니다. (물론 예외도 있지만요) 다시 말해 국어와 수학 성적은 서로 양의 상관관계가 있는 겁니다. 이건 다른 과목도 마찬가지이겠죠.

여기에 주성분 분석을 사용하면 5가지 변수를 1가지 변수로 축약할 수 있습니다. 이걸 제 1 주성분Comp.1 이라 부릅니다. 학력1 같은 식으로 이름을 붙이면 이해하기 편할 겁니다. 전 과목을 통틀어 성적이 얼마인지 요약해서 보여주는 거죠.

하지만 상관관계는 언제까지나 '대체로' 그런 것이기 때문에 분산을 설명하는 비율 Proportion of Variance가 100%는 아닐 겁니다. 예컨데 아래 예시에서 제1 주성분은 44.9% 밖에 설명하지 못합니다.

그래서 좀 더 정확하게 하기 위해 제 2 주성분Comp.2, 제 3 주성분Comp.3을 차례로 추가해나갑니다. 그러면 점점 더 설명력이 올라가고 정확해질 겁니다. 이걸 정확히 수치로 보려면 각 주성분이 설명해주는 비율을 모두 합한... 누적 비율Cumulative Propoltion을 봐야합니다. 아래 예시에서도 62.8% 76.6% 등으로 점점 올라가지요?

11번 (통계분석 - 시계열 분석)

15번

답이 곧 해설입니다만... ddply는 plyr라이브러리에 속해 있는 함수입니다. 데이터 프레임을 받아서 데이터 프레임을 출력합니다. 문제에서 어떤 데이터를 썼는지 몰라서 iris데이터를 이용해 비슷한 코드를 만들어 보았습니다.

iris는 위에서 본 airquality나 lh처럼 R의 내장 데이터로 붓꽃의 종(Species), 꽃잎의 길이(Length) 같은 내용입니다. 앞으로 이런 내장 데이터를 자주 사용하게 될 테니 참고하세요.

> ddply(iris,"Species",summarise, length_mean = mean(Sepal.Length))
     Species length_mean
1     setosa       5.006
2 versicolor       5.936
3  virginica       6.588
단답1
> score = c(800,750,630,970,500)
> gender = c(0,1,1,0,0) #점수와 젠더 벡터를 만들어서
> data = data.frame(score, gender) #데이터 프레임으로 바꿉니다.
> boxplot(score~gender, data) #상자그림으로 만듭니다.

상자 그림은 사분위 수를 시각화한 그래프입니다. 상자의 검은 선이 중앙값이고 윗 부분이 q3, 상자 아랫 부분이 q1입니다.

사분위수는 기초 통계, 그 중에서도 기술통계에서 배웁니다.. 데이터를 작은 것부터 큰 것까지 쭉 늘어놓고 4등분한 값입니다. summary 함수를 쓰면 숫자로 볼 수 있습니다. 최소값min - 제1 사분위수q1 - 중앙값median - 제3 사분위수 q3 - 최대값max 순으로 되어 있죠. q는 4분의 1이라는 뜻의 영어 quarter의 약자입니다.

여기에는 안 나왔지만 상자 그림은 이상값을 찾을 때에도 사용합니다. 위와 아래에 있는 선은 '수염'이라 부르는데 최대값 최솟값이 아닙니다. 굳이 말하자면 제 3 사분위 수에서 제 1사분위 수를 뺀 뒤 2.5를 곱한 값 만큼 떨어져 있습니다. 식으로 쓰면 2.5 * (q3-q1) 인데요... 여하튼 저 수염 바깥으로 나간 값은 다 이상값입니다. 이상한 데이터 말이죠. 절단하거나 상한 하한으로 조정해서 사용하게 됩니다. 자세한 이야기는 데이터마트 - 이상값 처리 부분을 봐주세요.

단답4

역시 iris데이터를 이용해서 비슷한 모델을 만들어봤습니다.

> y = iris$Petal.Width
> x1 = iris$Petal.Length
> x2 = iris$Sepal.Length
> md = lm(y~ x1 + x2)
> summary(md)

선형 회귀는 가장 많이 쓰이고, 시험에도 자주 나옵니다.

선형 회귀라고 부르는 이유는 회귀식이 선 모양 = 선형이기 때문입니다. 학교에서 y = ax+b 그래프가 어떻게 생겼는지 배우셨을 겁니다. 직선의 방정식이죠. 이걸 ax1 + bx2 + c 처럼 확장하면 여러 변수를 다룰 수도 있습니다.

예시에서처럼 데이터를 넣어주면 최소제곱법이라는 수학적 방법을 써서 a와 b의 값을 추정하여 모델을 만들어줍니다. 이 회귀식에 다른 x1, x2를 넣으면 y의 값을 예측할 수 있습니다. 일상적인 예를 들어보면 IQ로 성적을 예측하거나, 체지방 비율을 보고 성인병에 걸릴지 예측할 수도 있을 겁니다.

모든 지도 학습 모델은 주어진 데이터로 무언가를 예측합니다. 선형 회귀 말고도 로지스틱 회귀도 있고, 신경망이나 의사결정나무 같은 고도의 모델도 있습니다.

댓글

댓글 본문
작성자
비밀번호
버전 관리
Taehee Kim
현재 버전
선택 버전
graphittie 자세히 보기