응용식물통계학 Statistics of Applied Plants Science 친환경식물학부유기농생태학전공황선구
- 1. 분산분석 2. 회귀분석
준비 R과 R studio 설치 https://cran.r-project.org/bin/windows/base/ R 다운로드후설치 https://www.rstudio.com/products/rstudio/download/#download RStudio 1.2.1335 - Windows 7+ 다운로드후설치 통계교재 RAW files 다운로드 https://drive.google.com/drive/folders/0b98qpkk5ejemynj1aja1zvjwmzg
준비 프로그램검색에서 Rstudio 검색후실행 (R 아님에주의 )
File 클릭 New Project 클릭 RAW file 다운경로지정 ( 분석대상파일경로지정 ) 후 open
1 psds_data 압축해제한폴더지정
p value 의정의 ( 유의확률 ) 예 ) p value = 0.02, 1 0.02 = 0.98, 즉유의확률 98% 에속함 유의계수 유의확률 (p value) ( 기각역 ). 비교군들이서로유의하게다르다. p value = 0.15, 1 0.15 = 0.85, 즉유의확률 85% 에속함 ( 채택역 ). 비교군들이서로유의하게다르지않다.
분산분석을위한 R 명령어 data<-read.csv("four_sessions.csv") install.packages("ggplot2") library(ggplot2) install.packages("lmperm") library(lmperm) ggplot(data,aes(x=page,y=time))+geom_boxplot() summary(aovp(time~page,data=data)) summary(aov(time~page,data=data)) data1<-matrix(c(14,986,8,992,12,988),nrow=2) data1 dimnames(data1)<-list("l"=c("click","noclick"),"stat"=c("headline_a","headline_b","headline_c")) data1 chisq.test(data1) chisq.test(data1,simulate.p.value=true) fisher.test(data1)
> install.packages( ggplot2 ) > Library(ggplot2) 분산분석을통하여 4 개의다른웹페이지에대한선호도가다른지같은지 검정해보자 분산분석은일반적으로카이제곱검정과 F 검정이용. 카이제곱검정 : 단일표본의모집단이정규분포이며분산을알고있는경우에적용. 하지만, 통계과정에서이를알고있는경우가드물기때문에모집단을알고있지않은경우의 F 검정을중심으로분석.
분산분석 ( 여러그룹간의통계적인유의미한차이를검정하는분석 ; ANOVA) 의토대가되는재표본추출과정 1 데이터를한곳에수집 2 데이터를각그룹에같은수로다시추출 3 각그룹의평균을기록 4 각그룹의평균에대한분산을기록 5 2~4 단계를여러번반복 ( 예 : 1000번 ) 6 이렇게수집된분산을통해 p값을계산 분산분석을위해 aovp 함수를통해순열검정실시 순열검정 : 두개이상의표본을함꼐결합하여관측값들을무작위로 ( 또는전부를 ) 지표본으로추출하는과정 ( 임의화검정, 임의순열검정, 정확검정 ) Iter 은순열검정을위한반복수 Pr(Prob) 값이 p 값 (p value)
두그룹의평균비교를위하여순열검정대신 t 검정을사용할수잇는것처럼 F 통계량을기반으로한 ANOVA 통계검정도있다. Df 는자유도, Sum Sq 는제곱합, Mean Sq 는평균제곱, F value 는 F 통계량. 위의경우는변이요인이하나인일원분산분석 (One-way ANOVA) 이다. 만약변이요인이두개인경우는이원분산분석 (Two-way ANOVA) 를이용
다음의표와같이 A, B, C 의웹페이지에대한방문자의수를비교하자. 위의자료와같이 row column 형태의자료는카이제곱검정에의하여검정가능하다. 카이제곱검정의통계적이론방법, 즉카이제곱분포에대한 p 값
카이제곱검정의재표본추출방법 만약표본수가매우낮을경우에아래와같이 Fisher 의정확검정방법을사용하여더정확한 p 값을얻을수있다.
단순선형회귀분석을위한 R 명령어 lung <- read.csv("lungdisease.csv") library(ggplot2) names(lung) ggplot(lung,aes(x=exposure,y=pefr)) + geom_point(color='blue')+geom_line(color='red',data = lung, aes(x=exposure, y=pefr)) ggplot(lung,aes(x=exposure,y=pefr)) + geom_point(color='blue')+geom_smooth(method="lm",se=false,color='red') ggplot(lung,aes(x=exposure,y=pefr)) + geom_point(color='blue')+geom_smooth(method="lm",se=true,color='red') model<-lm(pefr~exposure,data=lung) model fitted <- predict(model) resid <- residuals(model) ggplot(lung,aes(x=exposure,y=pefr)) + geom_point(color='blue')+geom_smooth(method="lm",se=true,color='red')+geom_line(linetype="dotted") fitted resid
회귀분석 ( 단순선형회귀 ) 노동자들이면진 (Exposure) 에노출된년수와폐활량 (PEFR) 의관계에대하여회귀분석을통하 여예측해보자. 각측정치를선으로이을경우좌측의그림과같이 Exposure 에대한 PEFR 의영향에대한경향성을예측하기어렵다.
회귀분석 > ggplot(lung,aes(x=exposure,y=pefr)) + geom_point(color='blue')+geom_smooth(method="lm",se=false,color='red') 하지만 linear model 을적용하여노출년수에대한폐활량측정치의평균과편차를이용한절편과, 회귀계수를알수있다.
회귀분석 > ggplot(lung,aes(x=exposure,y=pefr)) + geom_point(color='blue')+geom_smooth(method="lm",se=true,color='red')
년수가증가할수록폐활량의변화는 -4.185( 기울기, 계수 ) 의비율을보임 적합값 잔차 ( 측정치와적합값의차이 )
다중선형회귀분석을위한 R 명령어 house <- read.table("house_sales.csv",header=t) head(house) head(house[,c("adjsaleprice","sqfttotliving","sqftlot","bathrooms","bedrooms","bldggrade")]) house_lm <- lm(adjsaleprice~sqfttotliving+sqftlot+bathrooms+bedrooms+bldggrade,data=house,na.action=na.omit) house_lm ggplot(house,aes(x=sqfttotliving,y=adjsaleprice)) + geom_point(color='blue')+geom_smooth(method="lm",se=true,color='red') ggplot(house,aes(x=sqftlot,y=adjsaleprice)) + geom_point(color='blue')+geom_smooth(method="lm",se=true,color='red') ggplot(house,aes(x=bathrooms,y=adjsaleprice)) + geom_point(color='blue')+geom_smooth(method="lm",se=true,color='red') ggplot(house,aes(x=bedrooms,y=adjsaleprice)) + geom_point(color='blue')+geom_smooth(method="lm",se=true,color='red') ggplot(house,aes(x=bldggrade,y=adjsaleprice)) + geom_point(color='blue')+geom_smooth(method="lm",se=true,color='red') summary(house_lm)
거주공간, 주차공간, 화장실, 침실, 건물 상태가집의가격에어떻게영향을미 치는지알아보자. 해석은단순선형회귀분석과동일, 다만여러가지독립변수에대한하나의종속변수와의관계를확인가능결과해석 : 거주공간을늘리면가격이약 228달러의비율로증가함.
모두낮은 p-value 로써의미있는결과를예측가능 위의결과에서 adjusted R-squared 의값, 즉수정 R 제곱값은 0.5157 이다. 수정 R 제곱값은결정계수라고도불리우 며값이 1 에가까울수록독립변수에의해종속변수가잘설명되는유용한모델임을제시.
낮은 p-value 로써의미있는 결과를도출 위의결과에서 adjusted R-squared 의값, 즉수정 R 제곱값은 0.5406 이다. 수정 R 제곱값은결정계수라고도불리우며값이 1 에 가까울수록독립변수에의해종속변수가잘설명되는유용한모델임을제시.
지금까지는전형적인통계적회귀측정지표들 (R 2, F 통계량, p 값 ) 은모두 표본내 지표들이다. 만약데이터집합이작다면누구나일반적으로가능한모든데이터를사용해서최상의모델을얻고자할것임. 교차타당성검사 란, 하나의데이터집합을여러개의연속된데이터집합으로나눈후검정하는것. k 다중교차타당성검사방식 1 1/k 의데이터를따로떼어놓는다. 2 남아있는데이터를통해적합한모델을훈련을통해설정 3 모델은 1/k 데이터에적용하고모델측정 ( 평가 ) 지표를기록 4 1/k 를원래집합에복귀한후다시 1/k 그룹을재설정 5 2~3단계반복 6 모든측정값들이검정될때까지반복 7 모델측정지표들을평균과같은방식으로결함 모델을훈련하기위하여데이터를나누는것을폴드 (fold) 라고부름.
어떤회귀분석에서많은변수를예측변수로사용가능. 그러나더많은변수를추가한다고해서꼭더좋은모델을얻는것은아님. 통계학자들은모델선택을위한지침으로 오컴의면도날 " 이라는원리를사용. 오컴의면도날 : 모든것이동일한조건에서는복잡한모델보다는단순한모델을우선사용 일본의 아카이케히로쓰구 는모델에항을추가할수록불이익을주는 AIC라는측정기준을개발. AIC는회귀변수검정에적용가능. AIC를최소화하는모델을어떻게찾을수있을까? 1. 부분집합회귀검정 : 가능한모든모델을검색하여검정, 계산을위한시간과대용량데이터와변수가많은집단에대한검정에적합하지않음. 2. 단계적회귀 : 예측변수를연속적으로추가 / 삭제하여 AIC를낮추는모델을검색가능.
단계적회귀분석을위한 R 명령어 house_full <- lm(adjsaleprice~sqfttotliving+sqftlot+bathrooms+bedrooms+bldggrade+propertytype+nbrlivingunits+sqftfinbasement+yrbuilt+yr Renovated+NewConstruction,data=house,na.action=na.omit) install.packages("mass") library(mass) step <- stepaic(house_full,directoin="both") step
> house_full <- lm(adjsaleprice~sqfttotliving+sqftlot+bathrooms+bedrooms+bldggrade+propertytype+nbrlivingunits+sqftfinbasement+yrbuilt+ YrRenovated+NewConstruction,data=house,na.action=na.omit) > install.packages("mass") > library(mass) > step <- stepaic(house_full,directoin="both")
위의단계적회귀분석결과, 몇개의변수들이삭제된모델을제시. 단계적회귀는모델을만드는데필요한변수들을자동으로결정하는방법.
가중회귀분석을위한 R 명령어 install.packages("lubridate") library(lubridate) house$year=year(house$documentdate) house$weight=house$year-2005 house_wt <- lm(adjsaleprice~sqfttotliving+sqftlot+bathrooms+bedrooms+bldggrade,data=house,weight=weight) round(cbind(house_lm=house_lm$coefficients,house_wt=house_wt$coefficients),digits=3)
정보중에는오래된정보와최근정보가혼재되어있는경우도있다. 통계학자들은오래된정보보다믿을수있는최근정보에가중치를두어분석하는방법을사용 이는주택가격데이터등과같은경우에효과적으로이용가능 > install.packages("lubridate") > library(lubridate) > house$year=year(house$documentdate) > house$weight=house$year-2005 > house_wt <- lm(adjsaleprice~sqfttotliving+sqftlot+bathrooms+bedrooms+bldggrade,data=house,weight=weight) > round(cbind(house_lm=house_lm$coefficients,house_wt=house_wt$coefficients),digits=3) 따라서가중회귀의계수는기존회귀분석결과와조금다름.