예시를 통한 작동 원리 파악
#패키지 설치, 자동차 관련 데이터
install.packages("dplyr")
install.packages("ggplot2")
#--> 우측하단에 Packages에서 조회 됨
#패키지 로드
library(dplyr) #<--배기량
library(ggplot2)
#데이터 검토
#ggplot2 안에 mpg의 데이터 확인
#"my per gallon" 의 약자로 자동차 데이터 모음
#열의 head 확인
head(mpg)
> head(mpg)
# A tibble: 6 × 11
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compact
2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compact
3 audi a4 2 2008 4 manual(m6) f 20 31 p compact
4 audi a4 2 2008 4 auto(av) f 21 30 p compact
5 audi a4 2.8 1999 6 auto(l5) f 16 26 p compact
6 audi a4 2.8 1999 6 manual(m5) f 18 26 p compact
#행과 열의 크기 확인
dim(mpg)
> dim(mpg)
[1] 234 11
#열의 속성을 나타냄
str(mpg)
> str(mpg)
tibble [234 × 11] (S3: tbl_df/tbl/data.frame)
$ manufacturer: chr [1:234] "audi" "audi" "audi" "audi" ...
$ model : chr [1:234] "a4" "a4" "a4" "a4" ...
$ displ : num [1:234] 1.8 1.8 2 2 2.8 2.8 3.1 1.8 1.8 2 ...
$ year : int [1:234] 1999 1999 2008 2008 1999 1999 2008 1999 1999 2008 ...
$ cyl : int [1:234] 4 4 4 4 6 6 6 4 4 4 ...
$ trans : chr [1:234] "auto(l5)" "manual(m5)" "manual(m6)" "auto(av)" ...
$ drv : chr [1:234] "f" "f" "f" "f" ...
$ cty : int [1:234] 18 21 20 21 16 18 18 18 16 20 ...
$ hwy : int [1:234] 29 29 31 30 26 26 27 26 25 28 ...
$ fl : chr [1:234] "p" "p" "p" "p" ...
$ class : chr [1:234] "compact" "compact" "compact" "compact" ..
*displ : 배기량, year : 생산년도, cyl : 엔진 실린더, trans : 변속기 타입, drv : 구동방식, cty : 시내연비, hwy : 고속도로 연비, fl : 연료의 종류, class : 자동차 분류(소형차인지..)
#컬럼의 분포 통계를 보여줌
summary(mpg)
manufacturer model displ year cyl trans
Length:234 Length:234 Min. :1.600 Min. :1999 Min. :4.000 Length:234
Class :character Class :character 1st Qu.:2.400 1st Qu.:1999 1st Qu.:4.000 Class :character
Mode :character Mode :character Median :3.300 Median :2004 Median :6.000 Mode :character
Mean :3.472 Mean :2004 Mean :5.889
3rd Qu.:4.600 3rd Qu.:2008 3rd Qu.:8.000
Max. :7.000 Max. :2008 Max. :8.000
drv cty hwy fl class
Length:234 Min. : 9.00 Min. :12.00 Length:234 Length:234
Class :character 1st Qu.:14.00 1st Qu.:18.00 Class :character Class :character
Mode :character Median :17.00 Median :24.00 Mode :character Mode :character
Mean :16.86 Mean :23.44
3rd Qu.:19.00 3rd Qu.:27.00
Max. :35.00 Max. :44.00
* 1st Qu. : 하위 25%에 해당하는 값, 3st Qu. : 상위 25%에 해당하는 값
#원 자료를 엑셀처럼 UI를 통해 보는 것으로 데이터가 많을 경우 권장하지 않음
View(mpg)
#회사별 평균 연비가 높은 순
mpg %>%
group_by(manufacturer) %>%
summarise(mean.hwy=mean(hwy)) %>%
arrange(desc(mean.hwy))
> mpg %>%
+ group_by(manufacturer) %>%
+ summarise(mean.hwy=mean(hwy)) %>%
+ arrange(desc(mean.hwy))
# A tibble: 15 × 2
manufacturer mean.hwy
<chr> <dbl>
1 honda 32.6
2 volkswagen 29.2
3 hyundai 26.9
4 audi 26.4
5 pontiac 26.4
6 subaru 25.6
7 toyota 24.9
8 nissan 24.6
9 chevrolet 21.9
10 ford 19.4
11 mercury 18
12 dodge 17.9
13 jeep 17.6
14 lincoln 17
15 land rover 16.5
SQL로 치면 from 절이 첫번째 mpg가 되는 듯하다.
#포드 연비 높은순 정렬
mpg %>%
filter(manufacturer =="ford") %>%
group_by(model) %>%
arrange(desc(hwy))
> mpg %>%
+ filter(manufacturer =="ford") %>%
+ group_by(model) %>%
+ arrange(desc(hwy))
# A tibble: 25 × 11
# Groups: model [4]
manufacturer model displ year cyl trans drv
<chr> <chr> <dbl> <int> <int> <chr> <chr>
1 ford mustang 3.8 1999 6 manu… r
2 ford mustang 4 2008 6 manu… r
3 ford mustang 3.8 1999 6 auto… r
4 ford mustang 4 2008 6 auto… r
5 ford mustang 4.6 2008 8 manu… r
6 ford mustang 4.6 1999 8 manu… r
7 ford mustang 4.6 2008 8 auto… r
8 ford mustang 4.6 1999 8 auto… r
9 ford mustang 5.4 2008 8 manu… r
10 ford explorer… 4 1999 6 manu… 4
# … with 15 more rows, and 4 more variables:
# cty <int>, hwy <int>, fl <chr>, class <chr>
#회귀분석 식 : Y ~ f(X, β)
#β는 미지의 매개변수로 상수나 벡터 값이고, X는 독립변수, Y는 종속변수이다.
#배기량이 연비에 미치는 영향 회귀분석
#아래는 hwy 가 종속변수, displ이 독립변수(배기량)
lm.mpg <- lm(data=mpg, hwy ~ displ) #회귀분석 hwy가 종속벼수
summary(lm.mpg) #결과 출력
#아래 결과 및 해설
> #배기량이 연비에 미치는 영향 회귀분석
> lm.mpg <- lm(data=mpg, hwy ~ displ) #회귀분석
> summary(lm.mpg) #결과 출력
Call:
lm(formula = hwy ~ displ, data = mpg)
Residuals:
Min 1Q Median 3Q Max
-7.1039 -2.1646 -0.2242 2.0589 15.0105
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 35.6977 0.7204 49.55 <2e-16 ***
displ -3.5306 0.1945 -18.15 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 3.836 on 232 degrees of freedom
Multiple R-squared: 0.5868, Adjusted R-squared: 0.585
F-statistic: 329.5 on 1 and 232 DF, p-value: < 2.2e-16
해설 : 배기량이 증가할 수록(독립변수의 증가가) 연비(종속변수)에 어떤 변화를 주는지에대한 측정으로
[Coefficients] 부분에서 displ 값은 배기량이 한단위 변화할때마다 연비가 얼마나 변하는지 기울기를 나타내줌.
Estimate 부분은 배기량이 1증가할 때마다 고속도로 연비가 -3.5306이(감소가) 된다는 것을 알 수 있다.
Pr(>|t|) 부분은 '유의 확률' p-value부분으로 '<2.2e-16'이라는 것은 2.2*10^(-16) 즉, 0.000000000000000022 보다 작다는의미. 즉, "두 변수의 관계가 통계적으로 유의하다" 라고 판단 할 수 있다.
*보통 통계분석은 5% 보다 작으면 유의하다 라고 해석함.
Multiple R-squared: 0.5868 <- 배기량이 고속도로 연비의 몇퍼센트 정도의 의미 혹은 설명을 해주는가 에대한 부분
댓글