R 기초및통계분석 도서출판신아문화사
서 문 Praise the Lord. 2014년 12월 1일제주연구원장으로취임하게되어학교를휴직하고 3년을가르치는일에서떠나게되었는데마지막강의시간에학생들에게다음과같은약속을하였다. 1993년제주대학교에부임하여경제통계학을강의하면서 2시간이론강의및 1시간실습을지켜왔고, 그동안 MSTAT, Excel, SAS, Stata 등다양한통계패키지를가르쳐왔는데지금은빅데이터의시대이고빅데이터처리에최적화되어있는 R 언어를공부해야할때이다. 따라서본인이 3년의임기를마치고학교로복귀하여경제통계학을다시가르치게되는 2018년 1학기에는 R 언어로실습을하겠다고하였다. 이약속은시대의변화에따른것이기도했지만나를채찍질하기위한나와의약속이기도하였다. 눈에보이지않으면곧잊혀진다 (out of sight and out of mind) 는말이있듯이 3년동안연구원업무에집중하다보니항상 R 언어를공부해야한다는생각은있었지만우선순위에서밀려공부를하지못했다. 2017년 12월 1일학교로다시돌아와보니 3년전에학생들과했던약속이떠올랐고 3월초에개강을앞두고마음이급해졌다. 2018년새해들어 R 언어를집중적으로공부하고 2018년 1학기강의안을마련하였다. 다소부족했지만 2018년 1학기강의를마치고, 2학기에강의안을업데이트하였고, 그결과물이 R 기초및통계분석 으로발간되게되었다. 본교재에서사용된데이터는본인의개인홈페이지 (http://kanggc.iptime.org/ data/) 에서다운받을수있고, 실습을위한코드는 http://kanggc.iptime.org/code/ 에서다운받을수있다. R 언어의유용한점중의하나는다양한 packages가있어이를활용하면다양한분석이가능하다는것이다. 본교재에서활용되는 packages들을한번에 install할수있도록 install- packages.r을만들어놓았으므로본교재로실습하기전에먼저 install-packages.r을실행하기를바란다.
지난두학기동안 R 언어를가르치면서강조했던단어가 R 언어의열성적인지지자를뜻하는 R Enthusiast이었다. 학생들에게그들의열정을쏟아부어도아깝지않은그무엇을소개하고싶었는데경제통계학과관련해서는그것이바로 R 언어라고몇번을강조하였다. 본교재가나오기까지많은도움이있었다. 무엇보다도 2018년도제주대학교국립대학육성사업의지원이있었기에본교재가출간될수있었다. 처음대하는 R 언어를포기하지않고굳굳하게따라와준학생들에게도감사를드린다. 그리고항상기도로격려를해주는사랑하는아내와두딸셀라와셀리에게도감사의말을전한다. 2019 년 1 월 뉴욕에서저자
목차 _ 1 목 차 제1장 R 기본사용 3 1. R 개요 4 2. RStudio 시작하기 9 3. 명령어실행방법 10 4. 수학및통계함수 15 제 2 장 Data set 21 1. Data set 만들기 22 2. 데이터관리기본명령어 30 제3장기본분석 39 1. 그림그리기 40 2. ggplot2를이용한그림그리기 51 3. 기술통계량계산 53 4. 평균의계산 57 5. 두확률변수의공분산 59 제4장이론적확률분포 63 1. 이론적확률분포의관계 64 2. 베르누이분포 65 3. 이항분포 67 4. 포아송분포 73
2 _ R 기초및통계분석 5. 균등분포 79 6. 표준정규분포 81 7. -분포 84 8. t-분포 92 9. F-분포 98 제5장표본분포 107 1. 표본평균의표본분포 108 2. 중심극한정리 114 3. 표본분산의표본분포 127 제6장추정 135 1. 추정및신뢰구간 136 2. 모평균의구간추정 137 3. 모분산의구간추정 144 제7장가설검정 149 1. 가설검정의기초개념 150 2. 단일집단에대한가설검정 158 3. 두집단에대한가설검정 161 참고문헌 171 부록 1. R 코드 173 부록 2. 주요통계표 221
제 1 장 R 기본사용 1. R 개요 2. RStudio 시작하기 3. 명령어실행방법 4. 수학및통계함수
4 _ R 기초및통계분석 제 1 장 R 기본사용 1. R 개요 (1) R 이란? 컴퓨터로통계및계량분석이가능하도록계산과정을정리해놓은프로그램을통계패키지 ( 또는소프트웨어 ) 라고하는데현재시중에는 SAS(Statistical Analysis System), SPSS(Statistical Package for the Social Sciences), Stata(Statistics Data), WinRats-32(Regression Analysis for Time Series), EViews(Econometric Views), Limdep(Limited Dependent model) 등다양한종류의통계소프트웨어가출시되어활용되고있다. 한편, 컴퓨터에명령을내리는데필요한 컴퓨터의언어 를프로그래밍언어 (programming language) 라고하는데전통적으로 Basic, Cobol, Fortran, C, C++ 등이활용되어왔으나최근에는 GAUSS(Matrix programming language), Matlab, S-plus, R 등의사용자가증가하고있다. R은프로그래밍언어로구성된통계분석도구로다양한분석기능을가지고있는통계패키지임에도불구하고무료로제공되고있어세계적으로많은분석가들이사용하고있다. R은오클랜드대학교의 Robert Gentleman과 Ross Ihaka에의해 1995년에처음으로개발되었고현재는 R core team 이 R 프로젝트를운영하고있다. R은데이터의조작 (manipulation) 과연산 (calculation), 그리고그래픽표현 (graphical display) 을통합하는통합패키지로금융공학, 생명공학, 행정학, 의학, 자연과학등여러전문분야에서활용도가높아지고있는데그이유는 R이다음과같은장점을가지고있기때문이다. 첫째, R은간단한명령어만으로복잡한계산을수행할수있는프로그램이기때문에분석을빠르게수행할수있다.
제 1 장 R 기본사용 _ 5 둘째, R은 Linux, UNIX, MAC OS X, Windows 등모든운영체제에서실행가능하고, 각종 DBMS(Database Management System) 데이터에접근이가능하고, 별도의패키지를사용하면 R의소스를 Java, Python, C, C++ 등의언어와호환하여사용할수있다. 셋째, R은공개소프트웨어로모든소스가공개되므로자유로운수정및변경이가능하여다양하고정밀한분석을할수있다. 넷째, 경제학, 행정학, 의학, 생물학등다양한학문분야에서사용되는수많은통계분석방법이패키지형태로공개되므로사용자가복잡한계산식을일일이입력하여분석해야하는수고를들수있다. 모든일에혜택과비용이동시에발생하듯이 R은이러한장점을가지고있지만 R 을사용하기위해서는 R 언어를배워야하며, 새로운기능이빠르게추가되고있기때문에지속적으로새로운기능을습득해야하는어려움이있다. (2) RStudio 란 소프트웨어개발과정에서필요한코딩 (coding), 디버깅 (debugging), 컴파일 (compile) 의과정을하나로패키지화한소프트웨어를통합개발환경 (Integrated Development Environment; IDE) 이라고하는데 RStudio는 R의통합개발환경소프트웨어로 RStudio를사용하기위해서는반드시 R이설치되어있어야한다. 코딩 : 프로그래밍언어를이용하여구체적인컴퓨터프로그램을만드는기술 디버깅 : 코드상의오류를찾아내어수정하는과정 컴파일 : 컴퓨터가처리한언어를사람이읽을수있는언어나그림으로변환하는프로그램 RStudio는기존의 R 개발환경에새로운기능들이추가되어사용자효용을높인유틸리티소프트웨어로다음과같은장점을가지고있다. 첫째, RStudio 역시모든운영체제에서실행이가능하며, 모든 R 버전과호환이가능하다. 둘째, 코딩작업에필요한콘솔 (console), 디버깅작업에필요한소스에디터 (source editor), 그리고데이터뷰어 (data viewer) 및도표이력 (plot history) 등통합개발환경의주요요소들이잘통합되어편리하고신속한작업이가능하다.
6 _ R 기초및통계분석 셋째, 표시되는구문을종류별로구분하고 ( 예를들어입력문과출력문, 함수등 ) 여러가지다른색으로강조하여표시하는구문강조 (syntax highlight) 기능, 기능과함수의첫글자로함수를자동으로검색하거나함수에포함될요소들을표시해주는코드완성 (code completion), 코드입력시괄호나따옴표가자동으로입력되는기능등이추가되어수식입력과정에서사용자의편의를기하고있다. (3) R 및 RStudio 설치 R의설치파일을다운로드하기위해서는 R의웹페이지 (www.r-project.org) 에접속하여다음과같은순서로진행한다. 첫째, 웹페이지초기화면 (< 그림 1-1>) 의좌측상단에있는 CRAN을클릭한다. < 그림 1-1> R 웹페이지초기화면 둘째, CRAN 페이지의국가별목록에서대한민국 (< 그림 1-2>) 의웹페이지주소중하나를클릭한다. < 그림 1-2> CRAN 페이지목록 ( 대한민국 ) 셋째, 운영체제선택메뉴 (< 그림 1-3>) 에서본인의운영체제에해당되는다운로드를클릭한다.
제 1 장 R 기본사용 _ 7 < 그림 1-3> 운영체제선택메뉴 넷째, Download R for Windows를선택하면세가지메뉴 (< 그림 1-4>) 가나타나는데 base 메뉴를선택한다, < 그림 1-4> 운영체제별메뉴 다섯째, Download R 3.4.3 for Windows(< 그림 1-5>) 를클릭하여설치파일을다운로드하고설치한다. 단, 설치시설치언어선택은영문을권장한다. < 그림 1-5> R 설치프로그램다운로드 RStudio 설치파일을다운로드하기위해서는 RStudio의웹페이지 (www.rstudio.org) 에접속하여다음과같은순서로진행한다. 첫째, 웹페이지초기화면 (< 그림 1-6>) 의우측상단에있는 Download RStudio를클릭한다.
8 _ R 기초및통계분석 < 그림 1-6> RStudio 웹페이지초기화면 둘째, RStudio의다양한버전 (< 그림 1-7>) 중무료인 RStudio Desktop Open Source License의 Download를클릭한다. < 그림 1-7> RStudio 의다양한버전 셋째, 운영체제별로분류된 RStudio의설치파일목록에서 RStudio 1.1.423 - Windows Vista/7/8/10 버전 (< 그림 1-8>) 을클릭하여설치파일을다운로드하고설치한다. < 그림 1-8> RStudio Desktop 버전의 OS 용설치파일
제 1 장 R 기본사용 _ 9 2. RStudio 시작하기 RStudio아이콘을클릭하면 < 그림 1-9> 와같이 Sources 창, Console 창, Environment/History 창, Files, Packages/Plots, Help, Viewer 창등 4개의창이나타난다. Source 창 : 프로그램 Source를편집프로그램내의 R 명령어에커서를두고 Ctrl-R로실행 Console 창 : 명령어를입력하고결과를확인상하화살표를이용하여이전명령어를편집및실행 Environment/History 창 - Environment 창 : 변수또는객체의목록과값확인 - History 창 : 명령어 History를확인및검색하고더블클릭하여 Console 창으로보냄 Files, Packages/Plots, Help, Viewer 창 - Files, Packages 창 : 파일과폴더및패키지목록 - Plots, Help, Viewer 창 : 그래프, 도움말, HTML 등명령어실행결과 < 그림 1-9> RStudio 4 개의창
10 _ R 기초및통계분석 3. 명령어실행방법 R 에서명령어를실행시키는방법에는직접명령문과할당명령문이있다. (1) 직접명령문 Console 창에서명령어를직접입력하여엔터를쳐서실행하거나 print() 함수를사용하여실행할수도있는데 R을마치계산기처럼사용할수있다. 콘솔의환영메시지는 Edit>Clear Console( 또는 Ctrl+L) 을선택하여지운후 ( 예제 1-1) 과같이명령어를입력하여엔터를치면 ( 예제 1-1) 의실행결과를보여준다. ( 예제 1-1) 직접명령문 1 > 2^3 > 2*3 > 3/3 > 3+3 > 3-3 > q() ( 예제 1-1) 의실행결과 > 2^3 [1] 8 > 2*3 [1] 6 > 3/3 [1] 1 > 3+3 [1] 6 > 3-3 [1] 0 > q()
제 1 장 R 기본사용 _ 11 또는 Ctrl+L을실행하여 console 창의내용을지운후 ( 예제 1-2) 와같이명령어를입력하여엔터를치면 ( 예제 1-2) 의실행결과를보여준다. ( 예제 1-2) 직접명령문 2 > print(2^.5, digits=5) > print(2*3, digits=5) > print(2/3, digits=5) > print(3+3, digits=5) > print(3-3, digits=5) > q() ( 예제 1-2) 의실행결과 > print(2^.5, digits=5) [1] 1.4142 > print(2*3, digits=5) [1] 6 > print(2/3, digits=5) [1] 0.66667 > print(3+3, digits=5) [1] 6 > print(3-3, digits=5) [1] 0 (2) 할당명령문 특정한데이터또는연산결과를새로운문자열에할당하여하나의객체를정의하는명령문으로작업결과의반환을요구하지않는다. 할당명령문의형태는할당연산자인 <-( 또는 ->) 를사용하는형태와할당함수인 assign() 을사용하는형태가있는데모두동일한기능을수행한다. 할당명령문에의해생성된객체를제거하려면 rm() 함수를이용하면된다. ( 예제 1-3) 과같이명령어를입력하여엔터를치면 ( 예제 1-3) 의실행결과를보여준다.
12 _ R 기초및통계분석 여기서 x<-c(1,2,3,4,5) 는 1부터 5까지 5개의수치형 (numeric) 원소를결합함수인 c() 로묶어길이 5인벡터를생성한후식별문자 x 에할당하는명령문이다. ( 예제 1-3) 할당명령문 1 > x<-c(1,2,3,4,5) > y<-c(1:10) > z<-x+y > x > y > z >rm(z) >z ( 예제 1-3) 의실행결과 > x<-c(1,2,3,4,5) > y<-c(1:10) > z<-x+y > x [1] 1 2 3 4 5 > y [1] 1 2 3 4 5 6 7 8 9 10 > z [1] 2 4 6 8 10 7 9 11 13 15 > rm(z) > z Error: object 'z' not found 한편, ( 예제 1-4) 와같이명령어를입력하여엔터를치면실행결과를보여준다. ( 예제 1-4) 할당명령문 2 > assign( x, c(1,2,3,4,5)) > assign( y, c(1:10)) > assign( z, x+y)
제 1 장 R 기본사용 _ 13 > x > y > z > rm(z) > z ( 예제 1-4) 의실행결과 > assign("x", c(1,2,3,4,5)) > assign("y", c(1:10)) > assign("z",x+y) > x [1] 1 2 3 4 5 > y [1] 1 2 3 4 5 6 7 8 9 10 > z [1] 2 4 6 8 10 7 9 11 13 15 > rm(z) > z Error: object 'z' not found (3) 코드입력및실행 Source 창에서프로그램 Source를작성, 편집, 저장, 실행, 불러오기등을할수있다. 작성된프로그램을한줄씩실행하는방법은 Run을클릭 ( 또는 Ctrl+Enter) 하고, 여러줄또는모든줄을동시에실행하는방법은여러줄또는모든줄을선택하고 Run을클릭하면된다. b1-ch1-5.r과같이명령어를입력하여모두선택하고 Run을클릭하면다음과같은실행결과를보여준다.
14 _ R 기초및통계분석 b1-ch1-5.r 의실행결과 > x<-c(1:10) > x [1] 1 2 3 4 5 6 7 8 9 10 > sort(x) [1] 1 2 3 4 5 6 7 8 9 10 > sort(x, decreasing=t) [1] 10 9 8 7 6 5 4 3 2 1 > mean(x) [1] 5.5 > median(x) [1] 5.5 > quantile(x) 0% 25% 50% 75% 100% 1.00 3.25 5.50 7.75 10.00 > diff(range(x)) [1] 9 > var(x) [1] 9.166667 > sd(x) [1] 3.02765 작성된프로그램 Source를저장하기위해서는 File/Save As를선택한후 < 그림 1-10> 과같이본인이원하는디렉토리에파일이름 ( 예, b1-ch1-1) 을입력하면되는데프로그램의확장자는 R로지정이된다.
제 1 장 R 기본사용 _ 15 < 그림 1-10> 프로그램의저장 저장된파일을불러오기위해서는 File/Open File을선택한후불러올파일이위치한디렉토리에서해당파일을불러오면된다. 4. 수학및통계함수 (1) 수학함수 R에서는다양하고광범위한내장함수를제공하고있어사용자는분석과정에서빈번하게사용되는수식을단순화한함수를사용함으로써작업의효율성을높일수있다. R 에서주로사용되는수학함수와그기능은 < 표 1-1> 과같다. < 표 1-1> 주요수학함수 함수 기능 함수 기능 sum() 모든원소의합 range() 범위함수 abs() 절댓값함수 exp() 지수함수 sqrt() 제곱근함수 log() 자연로그함수 max() 최댓값함수 log10() 상용로그함수 min() 최솟값함수 round() 소수점이하반올림
16 _ R 기초및통계분석 b1-ch1-2.r과같이수학함수와관련된명령어를입력하여모두선택하고 Run을클릭하면다음의실행결과를보여준다. b1-ch1-2.r 의실행결과 > a<-c(-3,-2,-1,1,2,3) > sum(a) [1] 0 > abs(a) [1] 3 2 1 1 2 3 > as<-a[4:6] > sqrt(as) [1] 1.000000 1.414214 1.732051 > max(a) [1] 3 > min(a) [1] -3 > range(a) [1] -3 3 > exp(a) [1] 0.04978707 0.13533528 0.36787944 2.71828183 7.38905610 20.08553692 > log(as) [1] 0.0000000 0.6931472 1.0986123 > log10(as) [1] 0.0000000 0.3010300 0.4771213
제 1 장 R 기본사용 _ 17 (2) 기본통계함수 기초적인통계분석과관련하여 R에서주로사용되는통계함수와그기능은 < 표 1-2> 와같다. 기본통계함수의사용은 b1-ch1-1.r을참고하면된다. < 표 1-2> 기본통계함수 함수 기능 함수 기능 mean() 산술평균 cor() 상관계수 sort() 오름 ( 내림 ) 차순정리 cov() 공분산 median() 중앙값 summary() 요약통계량 quantile() 분위수 cumsum() 누적합 diff() 원소사이의차이 lag() 시차변수만들기 var() 분산 sd() 표준편차 b1-ch1-3.r과같이기본통계함수와관련된명령어를입력하여모두선택하고 Run을클릭하면다음과같은실행결과를보여준다. > x<-c(21,4,13,6,12,7,4,25,22) b1-ch1-3.r 의실행결과 > y<-c(-2,4,-3,8,-7,8,-2,-6,5) > x;y [1] 21 4 13 6 12 7 4 25 22 [1] -2 4-3 8-7 8-2 -6 5 > cov(x,y) [1] -19.54167 > cor(x,y) [1] -0.4123081 > summary(x);summary(y) Min. 1st Qu. Median Mean 3rd Qu. Max. 4.00 6.00 12.00 12.67 21.00 25.00
18 _ R 기초및통계분석 Min. 1st Qu. Median Mean 3rd Qu. Max. -7.0000-3.0000-2.0000 0.5556 5.0000 8.0000 > cumsum(1:10);cumprod(1:10) [1] 1 3 6 10 15 21 28 36 45 55 [1] 1 2 6 24 120 720 5040 40320 362880 3628800 (3) 확률분포관련통계함수 확률분포와관련된통계함수와그기능은 < 표 1-3> 과같다. < 표 1-3> 확률분포통계함수 분포 R 함수 인수 (arguments) binomial binom() size, prob chi-squared chisq() df, ncp F f() df1, df2, ncp normal norm() mean, sd poison pois() lambda Student s t t() df, ncp uniform unif() min, max 우리가원하는통계량을얻기위해서는함수의이름앞에 < 표 1-4> 와같은접두사를붙여야한다. < 표 1-4> 확률분포접두사 접두사 d p q r 기능확률밀도함수 (PDF) 의확률값, f(x) 누적분포함수 (CDF) 의확률값, F(x) 분위수 (quantile) 값, F -1 (x) 무작위난수생성
제 1 장 R 기본사용 _ 19 b1-ch1-4.r과같이확률분포와관련된명령어를입력하여모두선택하고 Run을클릭하면다음과같은실행결과를보여준다. b1-ch1-4.r 의실행결과 > # 수익률평균 =40%, 표준편차 =10% 인정규분포에서수익률이 60% 보다낮을확률 > pnorm(60,mean=40,sd=10) [1] 0.9772499 > # 수익률평균 =40%, 표준편차 =10% 인정규분포에서수익률이 60% 보다높은확률 ( 표준화 ) > 1-pnorm(2,0,1) [1] 0.02275013 > #P(Z<1.645) > pnorm(1.645, 0,1) [1] 0.9500151 > #P(Z<K)=0.95일때, K의값은? > qnorm(0.95, 0,1) [1] 1.644854 > #t-통계량이 -3.271, n=16일때 p의값은? > pt(-3.271, 15) [1] 0.002578269 > #n=16일때, 5% 유의수준에서기각역 ( 단측 ) > qt(p=0.05, df=15) [1] -1.75305 > round(rnorm(n=20, mean=40, sd=10), digits=2) [1] 48.29 51.72 28.27 47.01 44.95 49.13 41.63 36.19 43.55 36.10 30.27 45.50 23.98 41.69 [15] 59.65 56.75 42.91 54.74 43.61 30.84
제 2 장 Data set 1. Data set 만들기 2. 데이터관리기본명령어
22 _ R 기초및통계분석 제 2 장 Data set 1. Data set 만들기 (1) R 에서직접자료를입력하기 R에서숫자나문자를직접입력하여데이터파일을만드는방법에는 Data Editor 창을이용하는방법과명령어를이용하는방법이있다. R Source 창에서다음과같이입력하면 Data Editor 창이뜨는데 < 그림 2-1> 과같이엑셀에서데이터를입력하는방법과유사하게데이터를입력하면된다. > mydata<-data.frame(age=numeric(), gender=character(), weight=numeric()) > mydata<-edit(mydata) < 그림 2-1> Data Editor 창및데이터입력
제 2 장 Data set _ 23 한편, 프로그래밍을할경우에는 Data Editor 창을이용한데이터입력방식을사용할수없으므로이경우명령어를활용할수있다. 예를들어나이 (age), 성별 (gender), 몸무게 (weight) 를보여주는데이터는프로그램작성시다음과같이명령어를입력하면된다. age<-c(25,30,56,61,33,30,85,47,27,70) gender<-c("female","male","male","male","female","male","female","female","male","female") weight<-c(52,65,89,68,55,73,60,49,105,58) (2) 외부에서작성된자료를불러들여오기 1 ASCII-TEXT 파일외부에서작성된 ASCII-TEXT 파일을 R로불러들여오기위해서는 b1-ch2-1.r 또는 b1-ch2-2.r을실행하면 ASCII-TEXT 파일을불러오고, 이를행렬로변경하면요약통계량을포함한다양한통계분석이가능하다. b1-ch2-1.r 의실행결과 > sample1<-"http://kanggc.iptime.org/book/data/sample1.txt" > sample_dat<-read.delim(sample1,header=t) > sample_dat year GDP consumption 1 2000 635184.6 413461.2 2 2001 688164.9 460668.2 3 2002 761938.9 515616.0 4 2003 810915.3 535967.4 5 2004 876033.1 562020.2 6 2005 919797.3 602345.4 7 2006 966054.6 643408.0 8 2007 1043257.8 691740.4 9 2008 1104492.2 740804.6
24 _ R 기초및통계분석 10 2009 1151707.8 769588.6 11 2010 1265308.0 819821.2 12 2011 1332681.0 873522.7 13 2012 1377456.7 911938.2 14 2013 1429445.4 942267.2 15 2014 1486079.3 972925.0 16 2015 1564123.9 1006005.6 17 2016 1637420.8 1047482.4 > year<-sample_dat$year > gdp<-sample_dat$gdp > consumption<-sample_dat$consumption > min(gdp) [1] 635184.6 > max(consumption) [1] 1047482 > mean(gdp) [1] 1120592 > mean(consumption) [1] 735857.8 > median(gdp) [1] 1104492 > median(consumption) [1] 740804.6 > quantile(gdp) 0% 25% 50% 75% 100% 635184.6 876033.1 1104492.2 1377456.7 1637420.8
제 2 장 Data set _ 25 > quantile(consumption) 0% 25% 50% 75% 100% 413461.2 562020.2 740804.6 911938.2 1047482.4 > var(gdp) [1] 100191904893 > var(consumption) [1] 40858333365 > sd(gdp) [1] 316531 > sd(consumption) [1] 202134.4 > summary(sample_dat) year GDP consumption Min. :2000 Min. : 635185 Min. : 413461 1st Qu.:2004 1st Qu.: 876033 1st Qu.: 562020 Median :2008 Median :1104492 Median : 740805 Mean :2008 Mean :1120592 Mean : 735858 3rd Qu.:2012 3rd Qu.:1377457 3rd Qu.: 911938 Max. :2016 Max. :1637421 Max. :1047482 b1-ch2-2.r 의실행결과 > sample1<-"http://kanggc.iptime.org/book/data/sample1.txt" > sample_dat<- as.matrix(read.delim(sample1,header=t),ncol=3) > sample_dat year GDP consumption [1,] 2000 635184.6 413461.2 [2,] 2001 688164.9 460668.2 [3,] 2002 761938.9 515616.0 [4,] 2003 810915.3 535967.4
26 _ R 기초및통계분석 [5,] 2004 876033.1 562020.2 [6,] 2005 919797.3 602345.4 [7,] 2006 966054.6 643408.0 [8,] 2007 1043257.8 691740.4 [9,] 2008 1104492.2 740804.6 [10,] 2009 1151707.8 769588.6 [11,] 2010 1265308.0 819821.2 [12,] 2011 1332681.0 873522.7 [13,] 2012 1377456.7 911938.2 [14,] 2013 1429445.4 942267.2 [15,] 2014 1486079.3 972925.0 [16,] 2015 1564123.9 1006005.6 [17,] 2016 1637420.8 1047482.4 > year<-sample_dat[,1] > year [1] 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 [17] 2016 > gdp<-sample_dat[,2] > gdp [1] 635184.6 688164.9 761938.9 810915.3 876033.1 919797.3 966054.6 1043257.8 [9] 1104492.2 1151707.8 1265308.0 1332681.0 1377456.7 1429445.4 1486079.3 1564123.9 [17] 1637420.8 > consumption<-sample_dat[,3] > consumption [1] 413461.2 460668.2 515616.0 535967.4 562020.2 602345.4 643408.0 691740.4 [9] 740804.6 769588.6 819821.2 873522.7 911938.2 942267.2 972925.0 1006005.6
제 2 장 Data set _ 27 [17] 1047482.4 > colmeans(sample_dat) year GDP consumption 2008.0 1120591.9 735857.8 > summary(sample_dat) year GDP consumption Min. :2000 Min. : 635185 Min. : 413461 1st Qu.:2004 1st Qu.: 876033 1st Qu.: 562020 Median :2008 Median :1104492 Median : 740805 Mean :2008 Mean :1120592 Mean : 735858 3rd Qu.:2012 3rd Qu.:1377457 3rd Qu.: 911938 Max. :2016 Max. :1637421 Max. :1047482 2 CSV 파일 CSV(Comma Separated Value) 파일은모든항목을콤마 (,) 단위로구분하여저장한데이터파일로엑셀, 워드, 메모장등다양한응용프로그램에서보기및편집이가능하다는장점이있다. b1-ch2-3.r을실행하면 CSV 파일을불러오고, 요약통계량을포함한다양한통계분석이가능하다. b1-ch2-3.r 의실행결과 > sample1<-("http://kanggc.iptime.org/book/data/csv_sample1.csv") > sample_dat<-read.csv(sample1,header=t,sep=",") > sample_dat year gdp consumption 1 2000 635184.6 413461.2 2 2001 688164.9 460668.2 3 2002 761938.9 515616.0 4 2003 810915.3 535967.4
28 _ R 기초및통계분석 5 2004 876033.1 562020.2 6 2005 919797.3 602345.4 7 2006 966054.6 643408.0 8 2007 1043257.8 691740.4 9 2008 1104492.2 740804.6 10 2009 1151707.8 769588.6 11 2010 1265308.0 819821.2 12 2011 1332681.0 873522.7 13 2012 1377456.7 911938.2 14 2013 1429445.4 942267.2 15 2014 1486079.3 972925.0 16 2015 1564123.9 1006005.6 17 2016 1637420.8 1047482.4 > year<-sample_dat$year > gdp<-sample_dat$gdp > consumption<-sample_dat$consumption > summary(sample_dat) year gdp consumption Min. :2000 Min. : 635185 Min. : 413461 1st Qu.:2004 1st Qu.: 876033 1st Qu.: 562020 Median :2008 Median :1104492 Median : 740805 Mean :2008 Mean :1120592 Mean : 735858 3rd Qu.:2012 3rd Qu.:1377457 3rd Qu.: 911938 Max. :2016 Max. :1637421 Max. :1047482 3 Excel 파일 Excel을불러오는방법은다양한방법이있는데웹상에있는 xlsx 파일을불러올수있는방법을설명하고자한다. 이를위해서는먼저 openxlxs 패키지를 install한후 library로불러와야하는데 b1-ch2-4.r을실행하면 Excel 파일을불러오고, 이를행렬로변경하면요약통계량을포함한다양한통계분석이가능하다. 만약에 xls 파일을위와같은방법으로불러오기위해서는 xls 파일을 xlsx 파일로변환시켜주면된다.
제 2 장 Data set _ 29 b1-ch2-4.r 의실행결과 > library(openxlsx) > excel_sample1<-read.xlsx("http://kanggc.iptime.org/book/data/sample1-n.xlsx") > excel_sample1 year gdp consumption 1 2000 635184.6 413461.2 2 2001 688164.9 460668.2 3 2002 761938.9 515616.0 4 2003 810915.3 535967.4 5 2004 876033.1 562020.2 6 2005 919797.3 602345.4 7 2006 966054.6 643408.0 8 2007 1043257.8 691740.4 9 2008 1104492.2 740804.6 10 2009 1151707.8 769588.6 11 2010 1265308.0 819821.2 12 2011 1332681.0 873522.7 13 2012 1377456.7 911938.2 14 2013 1429445.4 942267.2 15 2014 1486079.3 972925.0 16 2015 1564123.9 1006005.6 17 2016 1637420.8 1047482.4 > excel_sample1_dat<- data.matrix(excel_sample1) > excel_sample1_dat year gdp consumption 1 2000 635184.6 413461.2 2 2001 688164.9 460668.2 3 2002 761938.9 515616.0 4 2003 810915.3 535967.4 5 2004 876033.1 562020.2 6 2005 919797.3 602345.4 7 2006 966054.6 643408.0 8 2007 1043257.8 691740.4 9 2008 1104492.2 740804.6 10 2009 1151707.8 769588.6
30 _ R 기초및통계분석 11 2010 1265308.0 819821.2 12 2011 1332681.0 873522.7 13 2012 1377456.7 911938.2 14 2013 1429445.4 942267.2 15 2014 1486079.3 972925.0 16 2015 1564123.9 1006005.6 17 2016 1637420.8 1047482.4 > year<-excel_sample1_dat[,1] > gdp<-excel_sample1_dat[,2] > consumption<-excel_sample1_dat[,3] > summary(excel_sample1_dat) year gdp consumption Min. :2000 Min. : 635185 Min. : 413461 1st Qu.:2004 1st Qu.: 876033 1st Qu.: 562020 Median :2008 Median :1104492 Median : 740805 Mean :2008 Mean :1120592 Mean : 735858 3rd Qu.:2012 3rd Qu.:1377457 3rd Qu.: 911938 Max. :2016 Max. :1637421 Max. :1047482 2. 데이터관리기본명령어 (1) 변수의변환및변수명의변경 기존의변수를이용하여새로운변수를만들어사용할수있는데예를들어 gdp 및 consumption에자연로그를취하여 lgdp 및 lconsumption 변수를만들수있다. 변수명을변경할수있는데하나의변수명을변경하거나 ( 예를들어, consumption 을 cons로 ) 전체변수명을변경할수있다. b1-ch2-5.r을실행하면변수명이바뀐것을확인할수있다.
제 2 장 Data set _ 31 b1-ch2-5.r 의실행결과 > library(openxlsx) > excel_sample1<-read.xlsx("http://kanggc.iptime.org/book/data/sample1-n.xlsx") > excel_sample1_dat<- data.matrix(excel_sample1) > year<-excel_sample1_dat[,1] > gdp<-excel_sample1_dat[,2] > consumption<-excel_sample1_dat[,3] > lgdp<-log(gdp) > lconsumption<-log(consumption) > lgdp; lconsumption 1 2 3 4 5 6 7 8 9 13.36167 13.44178 13.54362 13.60592 13.68316 13.73191 13.78098 13.85786 13.91490 10 11 12 13 14 15 16 17 13.95676 14.05083 14.10270 14.13575 14.17280 14.21165 14.26284 14.30863 1 2 3 4 5 6 7 8 9 12.93232 13.04043 13.15312 13.19183 13.23929 13.30859 13.37453 13.44697 13.51549 10 11 12 13 14 15 16 17 13.55361 13.61684 13.68029 13.72333 13.75604 13.78806 13.82150 13.86190 > names(excel_sample1) [1] "year" "gdp" "consumption" > excel_sample1 year gdp consumption 1 2000 635184.6 413461.2 2 2001 688164.9 460668.2 3 2002 761938.9 515616.0
32 _ R 기초및통계분석 4 2003 810915.3 535967.4 5 2004 876033.1 562020.2 6 2005 919797.3 602345.4 7 2006 966054.6 643408.0 8 2007 1043257.8 691740.4 9 2008 1104492.2 740804.6 10 2009 1151707.8 769588.6 11 2010 1265308.0 819821.2 12 2011 1332681.0 873522.7 13 2012 1377456.7 911938.2 14 2013 1429445.4 942267.2 15 2014 1486079.3 972925.0 16 2015 1564123.9 1006005.6 17 2016 1637420.8 1047482.4 > names(excel_sample1)[3]<-"cons" > excel_sample1 year gdp cons 1 2000 635184.6 413461.2 2 2001 688164.9 460668.2 3 2002 761938.9 515616.0 4 2003 810915.3 535967.4 5 2004 876033.1 562020.2 6 2005 919797.3 602345.4 7 2006 966054.6 643408.0 8 2007 1043257.8 691740.4 9 2008 1104492.2 740804.6 10 2009 1151707.8 769588.6 11 2010 1265308.0 819821.2 12 2011 1332681.0 873522.7 13 2012 1377456.7 911938.2 14 2013 1429445.4 942267.2 15 2014 1486079.3 972925.0 16 2015 1564123.9 1006005.6 17 2016 1637420.8 1047482.4
제 2 장 Data set _ 33 > names(excel_sample1)<-c("t","y","c") > excel_sample1 T Y C 1 2000 635184.6 413461.2 2 2001 688164.9 460668.2 3 2002 761938.9 515616.0 4 2003 810915.3 535967.4 5 2004 876033.1 562020.2 6 2005 919797.3 602345.4 7 2006 966054.6 643408.0 8 2007 1043257.8 691740.4 9 2008 1104492.2 740804.6 10 2009 1151707.8 769588.6 11 2010 1265308.0 819821.2 12 2011 1332681.0 873522.7 13 2012 1377456.7 911938.2 14 2013 1429445.4 942267.2 15 2014 1486079.3 972925.0 16 2015 1564123.9 1006005.6 17 2016 1637420.8 1047482.4 b1-ch2-6.r은엑셀데이터를불러와서시계열로변경하고, 시계열의시차변수를만들고, 전년대비증가율을구한후그림을그린다. 또한시계열의로그를취한후차분값을구하면전년대비증가율의근사치를구할수있음을보여주고있다. > library(openxlsx) b1-ch2-6.r 의실행결과 > excel_sample1<-read.xlsx("http://kanggc.iptime.org/book/data/sample1-n.xlsx") > excel_sample1_dat<- data.matrix(excel_sample1) > year<-excel_sample1_dat[,1]
34 _ R 기초및통계분석 > gdp<-excel_sample1_dat[,2] > consumption<-excel_sample1_dat[,3] > graphics.off() > par("mar") [1] 5.1 4.1 4.1 2.1 > par(mar=c(1,1,1,1)) > y.ts<-ts(gdp, start=2000, end=2016, frequency=1) > c.ts<-ts(consumption, start=2000, end=2016, frequency=1) > lagy<-lag(y.ts, k=-1) > lagc<-lag(c.ts, k=-1) > gy<-(y.ts-lagy)/lagy > gc<-(c.ts-lagc)/lagc > ly.ts<-log(y.ts) > lc.ts<-log(c.ts) > gly<-ly.ts-lag(ly.ts, k=-1) > glc<-lc.ts-lag(lc.ts, k=-1) > (y<-cbind(gy, gly)) Time Series: Start = 2001 End = 2016 Frequency = 1 gy gly
제 2 장 Data set _ 35 2001 0.08340930 0.08011282 2002 0.10720396 0.10183788 2003 0.06427864 0.06229724 2004 0.08030160 0.07724027 2005 0.04995724 0.04874944 2006 0.05029075 0.04906703 2007 0.07991598 0.07688324 2008 0.05869537 0.05703736 2009 0.04274869 0.04186020 2010 0.09863630 0.09406969 2011 0.05324632 0.05187713 2012 0.03359821 0.03304613 2013 0.03774253 0.03704771 2014 0.03961949 0.03885477 2015 0.05251712 0.05118455 2016 0.04686131 0.04579646 > (c<-cbind(gc, glc)) Time Series: Start = 2001 End = 2016 Frequency = 1 gc glc 2001 0.11417516 0.10811437 2002 0.11927847 0.11268426 2003 0.03947007 0.03871104 2004 0.04860893 0.04746445 2005 0.07175045 0.06929324 2006 0.06817119 0.06594801 2007 0.07511936 0.07243169 2008 0.07092863 0.06852615 2009 0.03885505 0.03811919 2010 0.06527202 0.06323018 2011 0.06550392 0.06344785 2012 0.04397768 0.04303811 2013 0.03325774 0.03271666 2014 0.03253621 0.03201811
36 _ R 기초및통계분석 2015 0.03400118 0.03343592 2016 0.04122919 0.04040193 > par(mfrow=c(2,1)) > plot(gy, type="l", col="red", main="exact Growth Rate vs. Approx. Growth Rate of GDP") > lines(gly, lwd=3, lty=6, col="green") > plot(gc, type="l", col="red", main="exact Growth Rate vs. Approx. Growth Rate of Consumption") > lines(glc, lwd=3, lty=6, col="green")
제 2 장 Data set _ 37 (2) 부분자료추출 데이터의일부분을추출할수도있는데예를들어, b1-ch2-7.r을실행하면 2000 년대와 2010년대의자료를각각추출할수있다. > library(openxlsx) b1-ch2-7.r 의실행결과 > excel_sample1<-read.xlsx("http://kanggc.iptime.org/book/data/sample1-n.xlsx") > excel_sample1_dat<- data.matrix(excel_sample1) > year<-excel_sample1_dat[,1] > gdp<-excel_sample1_dat[,2] > consumption<-excel_sample1_dat[,3] > data1<-excel_sample1_dat[1:10,] > data1 year gdp consumption 1 2000 635184.6 413461.2 2 2001 688164.9 460668.2 3 2002 761938.9 515616.0 4 2003 810915.3 535967.4 5 2004 876033.1 562020.2 6 2005 919797.3 602345.4 7 2006 966054.6 643408.0 8 2007 1043257.8 691740.4 9 2008 1104492.2 740804.6 10 2009 1151707.8 769588.6 > data2<-excel_sample1_dat[11:17,] > data2
38 _ R 기초및통계분석 year gdp consumption 11 2010 1265308 819821.2 12 2011 1332681 873522.7 13 2012 1377457 911938.2 14 2013 1429445 942267.2 15 2014 1486079 972925.0 16 2015 1564124 1006005.6 17 2016 1637421 1047482.4
제 3 장 기본분석 1. 그림그리기 2. ggplot2를이용한그림그리기 3. 기술통계량계산 4. 평균의계산 5. 두확률변수의공분산
40 _ R 기초및통계분석 제 3 장기본분석 1. 그림그리기 (1) 선그래프 데이터를이용하여다양한그림을그릴수있는데예를들어, b1-ch3-1.r을실행하면 2000년부터 2016년까지우리나라의 GDP와 Consumption( 소비 ) 에대한선그래프를그릴수있다. b1-ch3-1.r 의실행결과 > csv_sample1<-"http://kanggc.iptime.org/book/data/csv_sample1.csv" > csv_sample_dat<- as.matrix(read.csv(csv_sample1,header=t),ncol=3) > year<-csv_sample_dat[,1] > gdp<-csv_sample_dat[,2] > consumption<-csv_sample_dat[,3] > gdp [1] 635184.6 688164.9 761938.9 810915.3 876033.1 919797.3 [7] 966054.6 1043257.8 1104492.2 1151707.8 1265308.0 1332681.0 [13] 1377456.7 1429445.4 1486079.3 1564123.9 1637420.8 > consumption [1] 413461.2 460668.2 515616.0 535967.4 562020.2 602345.4
제 3 장기본분석 _ 41 [7] 643408.0 691740.4 740804.6 769588.6 819821.2 873522.7 [13] 911938.2 942267.2 972925.0 1006005.6 1047482.4 > par(mfrow=c(2,1)) # 한페이지에그림을위아래로나누어그림 > plot(year, gdp, type="l", main="gdp of Korea(2000-2016)") > plot(year, consumption, type="l", lty=2,main="consumption of Korea(2000-2016)") GDP of Korea(2000-2016) gdp 600000 1600000 2000 2005 2010 2015 year Consumption of Korea(2000-2016) consumption 4e+05 9e+05 2000 2005 2010 2015 year (2) 히스토그램 b1-ch3-2.r을실행하면 2000년부터 2016년까지우리나라의 GDP와 Consumption( 소비 ) 에대한히스토그램을그릴수있다.
42 _ R 기초및통계분석 b1-ch3-2.r 의실행결과 > csv_sample1<-"http://kanggc.iptime.org/book/data/csv_sample1.csv" > csv_sample_dat<- as.matrix(read.csv(csv_sample1,header=t),ncol=3) > year<-csv_sample_dat[,1] > gdp<-csv_sample_dat[,2] > consumption<-csv_sample_dat[,3] > gdp [1] 635184.6 688164.9 761938.9 810915.3 876033.1 919797.3 [7] 966054.6 1043257.8 1104492.2 1151707.8 1265308.0 1332681.0 [13] 1377456.7 1429445.4 1486079.3 1564123.9 1637420.8 > consumption [1] 413461.2 460668.2 515616.0 535967.4 562020.2 602345.4 [7] 643408.0 691740.4 740804.6 769588.6 819821.2 873522.7 [13] 911938.2 942267.2 972925.0 1006005.6 1047482.4 > par(mfrow=c(1,2)) # 한페이지에그림을좌우로나누어그림 > hist(gdp) > hist(consumption, breaks=8, col="red") # 구간의수를 8 개로함 Histogram of gdp Histogram of consumption Frequency 0 1 2 3 4 Frequency 0.0 0.5 1.0 1.5 2.0 2.5 3.0 600000 1000000 1400000 1800000 400000 600000 800000 1100000 gdp consumption
제 3 장기본분석 _ 43 표준정규분포로부터 10,000개의자료를만든후히스토그램을그리기위해서다음의명령을입력하면된다. >set.seed(1234) # 임의의정수 ( 예를들어 1이나 123이나 300이나 12345) 를부여하여재현가능한무작위번호를얻을수있는함수 >x<-rnorm(10000) # 표준정규분포로부터 10,000개의자료를생성 >hist(x, breaks=100) # 구간의수를 100으로하는히스토그램을그림 (3) 산포도 b1-ch3-3.r을실행하면 2000년부터 2016년까지우리나라의 GDP와 Consumption( 소비 ) 에대한산포도 (scatter plot) 를그릴수있다. b1-ch3-3.r 의실행결과 > csv_sample1<-"http://kanggc.iptime.org/book/data/csv_sample1.csv" > csv_sample_dat<- as.matrix(read.csv(csv_sample1,header=t),ncol=3) > year<-csv_sample_dat[,1] > gdp<-csv_sample_dat[,2]
44 _ R 기초및통계분석 > consumption<-csv_sample_dat[,3] > gdp [1] 635184.6 688164.9 761938.9 810915.3 876033.1 919797.3 [7] 966054.6 1043257.8 1104492.2 1151707.8 1265308.0 1332681.0 [13] 1377456.7 1429445.4 1486079.3 1564123.9 1637420.8 > consumption [1] 413461.2 460668.2 515616.0 535967.4 562020.2 602345.4 [7] 643408.0 691740.4 740804.6 769588.6 819821.2 873522.7 [13] 911938.2 942267.2 972925.0 1006005.6 1047482.4 > plot(gdp, consumption, main="scatter plot of GDp and Consunption") Scatter plot of GDp and Consunption consumption 4e+05 6e+05 8e+05 1e+06 600000 800000 1000000 1200000 1400000 1600000 gdp
제 3 장기본분석 _ 45 (4) 상자그래프 상자그래프 (box plot) 는최솟값, 아래사분위수 ( ), 중위수, 위사분위수 ( ), 최댓값등 5개순서통계량을이용하여자료를요약 정리하는그래프표현방법으로두개이상의집단을상대적으로비교하기쉬운장점이있다. 상자그래프는 과 를연결하는상자를그리고, 그상자안에중위수를나타내는선을그리며, 최솟값과, 그리고 와최댓값을선으로연결하는표현방법으로 5개의순서통계량의위치를관찰하여자료분포의특징을알수있다. b1-ch3-4.r을실행하면중간고사 (mid), 기말고사 (final), 총점 (total) 에대한상자그래프를그릴수있다. > library(openxlsx) b1-ch3-4.r 의실행결과 > sample1<-read.xlsx("http://kanggc.iptime.org/book/data/stat-1.xlsx", sheet=1, startrow=1, colnames = T) > mid<-sample1$mid > final<-sample1$final > total<-sample1$total > grade<-sample1$grade > summary(sample1) mid final total grade Min. :12.00 Min. :10.00 Min. :27.70 Min. :1.000 1st Qu.:48.75 1st Qu.:36.00 1st Qu.:58.17 1st Qu.:2.750 Median :60.00 Median :55.00 Median :67.75 Median :4.000 Mean :59.58 Mean :52.08 Mean :67.04 Mean :3.783 3rd Qu.:69.25 3rd Qu.:70.50 3rd Qu.:79.45 3rd Qu.:5.000 Max. :98.00 Max. :93.00 Max. :95.45 Max. :8.000
46 _ R 기초및통계분석 > par(mfrow=c(1,3)) # 한페이지에그림을좌우로 3 개나누어그림 > boxplot(mid, main="box plot of mid") > boxplot(final, main="box plot of final") > boxplot(total, main="box plot of total") Box plot of Test Score 20 40 60 80 100 mid final total (5) 원그래프 (Pie Chart) 원그래프 (pie chart) 는전체자료가여러개의카테고리로분류되어지는경우개개의카테고리를전체에대한비율에따라원내부의면적을분할한파이 (pie) 모양의도표이다. 즉, 각범주의관측도수의상대적인크기를원을분할한형태로표현하는방법이다. b1-ch3-5.r을실행하면총점 (total) 을 8개의등급으로나누어원그래프를그릴수있다.
제 3 장기본분석 _ 47 b1-ch3-5.r 의실행결과 > library(openxlsx) > sample1<-read.xlsx("http://kanggc.iptime.org/book/data/stat-1.xlsx", sheet=1, startrow=1, colnames = T) > slices<-c(1,2,3,4,5,6,7,8) > lbls<-c("1 등급 ","2 등급 ","3 등급 ","4 등급 ","5 등급 ","6 등급 ","7 등급 ","8 등급 ") > pie(slices, labels=lbls, main="pie Chart of Total Score")> (6) 막대그래프 (Bar Chart) 도수분포표는숫자로관측된양적자료 ( 연속형자료 ) 를일정한구간으로나눈후에각구간에속한개수들의수를도수로나타낸표이다. 도수분포표에서각구간의관측도수를막대형태로표현하여그크기를비교할수있도록하는자료의요약방법이막대그래프이다.
48 _ R 기초및통계분석 b1-ch3-6.r을실행하면총점 (total) 을 8개의구간으로나누어막대그래프를그릴수있다. > library(openxlsx) b1-ch3-6.r 의실행결과 > sample1<-read.xlsx("http://kanggc.iptime.org/book/data/stat-1.xlsx", sheet=1, startrow=1, colnames = T) > mid<-sample1$mid > final<-sample1$final > total<-sample1$total > grade<-sample1$grade > total [1] 95.45 93.00 91.95 90.20 87.45 85.30 84.35 84.30 83.95 83.90 82.85 [12] 82.15 81.45 81.15 80.80 79.00 78.00 77.25 75.85 75.50 75.50 75.15 [23] 74.15 74.10 71.65 71.10 69.90 68.25 68.15 67.95 67.55 67.45 66.75 [34] 64.80 64.65 63.40 63.35 63.30 62.55 62.30 61.15 60.60 59.80 59.65 [45] 58.35 57.65 56.95 55.25 53.20 51.40 51.10 48.95 48.45 47.30 47.00 [56] 40.50 39.65 31.30 30.45 27.70 > grade [1] 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 [35] 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 6 6 6 6 6 7 7 7 8 > counts<-table(total, grade) > barplot(counts, main="bar Chart of Total Score", xlab="grade")
제 3 장기본분석 _ 49 Bar Chart of Total Score 0 5 10 15 1 2 3 4 5 6 7 8 Grade (7) 잎 - 줄기그래프 (Stem and Leaf Plot) 숫자단위 (1단위, 10단위, 100단위, ) 를이용하여숫자를두부분으로나누어앞부분은줄기로, 그리고뒷부분은잎으로하여자료를요약 표현하는방법이잎-줄기그래프이다. 잎-줄기그래프를그리는방법은먼저숫자를작은것부터크기순서에따라열 (columnize) 로나열하고, 관측값을그숫자가속한위치의줄기에맞추어잎부분을기록하는데줄기내의잎의값들은작은것부터크기순서로정리한다. 이때각줄기에너무많은관측값이주어지면각줄기에두줄을할당하여첫줄에는잎의 0, 1, 2, 3, 4를기록하고, 둘째줄에는잎의 5, 6, 7, 8, 9를기록할수있다. b1-ch3-7.r을실행하면총점 (total) 으로잎-줄기그래프를그릴수있다. > library(openxlsx) b1-ch3-7.r 의실행결과 > sample1<-read.xlsx("http://kanggc.iptime.org/book/data/stat-1.xlsx", sheet=1,
50 _ R 기초및통계분석 startrow=1, colnames = T) > mid<-sample1$mid > final<-sample1$final > total<-sample1$total > grade<-sample1$grade > total [1] 95.45 93.00 91.95 90.20 87.45 85.30 84.35 84.30 83.95 83.90 82.85 [12] 82.15 81.45 81.15 80.80 79.00 78.00 77.25 75.85 75.50 75.50 75.15 [23] 74.15 74.10 71.65 71.10 69.90 68.25 68.15 67.95 67.55 67.45 66.75 [34] 64.80 64.65 63.40 63.35 63.30 62.55 62.30 61.15 60.60 59.80 59.65 [45] 58.35 57.65 56.95 55.25 53.20 51.40 51.10 48.95 48.45 47.30 47.00 [56] 40.50 39.65 31.30 30.45 27.70 > stem(total) The decimal point is 1 digit(s) to the right of the 2 8 3 01 4 017789 5 1135788 6 00112333355778888 7 012445666789 8 11123444457 9 0235 > > stem(total, scale=0.5) # scale=0.5을통해줄기의수를조정할수있음 The decimal point is 1 digit(s) to the right of the 2 801 4 0177891135788
제 3 장기본분석 _ 51 6 00112333355778888012445666789 8 111234444570235 > > stem(total, scale=2) # scale=0.5을통해줄기의수를조정할수있음 The decimal point is 1 digit(s) to the right of the 2 8 3 01 3 4 01 4 7789 5 113 5 5788 6 001123333 6 55778888 7 01244 7 5666789 8 111234444 8 57 9 023 9 5 2. ggplot2 를이용한그림그리기 R에서제공하는다양한시각화관련패키지중하나인 ggplot2 패키지는히스토그램, 상자그래프등다양한종류의그래프를그릴수있고글자크기, 폰트, 색상등도원하는형태로설정할수있어 ggplot2만으로도충분히원하는시각화가가능하다. b1-ch3-8.r을실행하면우리나라의 wifi가설치된위치를그림으로그리거나제주지역의행정구역을그릴수있다.
52 _ R 기초및통계분석 b1-ch3-8.r의실행결과 install.packages("ggplot2") library(ggplot2) con1<-url("http://kanggc.iptime.org/book/data/map.rdata") con2<-url("http://kanggc.iptime.org/book/data/mapjeju.rdata") load(con1) load(con2) ggplot()+geom_path(data=map, aes(x=long, y=lat, group=group)) ggplot()+geom_path(data=map.jeju, aes(x=long, y=lat, group=group)) 38 37 lat 36 35 34 33 126 128 130 132 long
제 3 장기본분석 _ 53 33.5 33.4 lat 33.3 33.2 33.1 126.2 126.4 126.6 126.8 127.0 long 3. 기술통계량계산 데이터의중심을측정하는통계량으로평균, 중위수, 최빈값등이있는데평균과중위수는각각 mean 함수및 median 함수를이용하여구할수있으나최빈값을구하는 Mode는기본기능에없으므로 prettyr이라는패키지를통해구할수있다. 한편, 데이터의흩어짐의정도를측정하는통계량으로범위, 분산, 표준편차등이있다 b1-ch3-9.r을실행하면데이터의중심및흩어짐의정도를측정하는통계량을구할수있다.
54 _ R 기초및통계분석 b1-ch3-9.r 의실행결과 > library(prettyr) > ch2_1<-scan("http://kanggc.iptime.org/book/data/ch2_1.txt") Read 50 items > ch2_1 [1] 65 74 65 36 81 60 43 21 83 64 12 91 60 24 54 69 89 96 86 85 95 85 51 [24] 81 47 62 85 46 49 76 44 72 33 46 49 74 78 48 62 97 31 96 97 88 61 54 [47] 89 77 72 35 > max(ch2_1) [1] 97 > min(ch2_1) [1] 12 > mean(ch2_1) [1] 64.76 > diff(range(ch2_1)) [1] 85 > var(ch2_1) [1] 490.88 > sd(ch2_1) [1] 22.15581 > table(ch2_1)[table(ch2_1)[1:length(unique(ch2_1))]==max(table(ch2_1))] 85 3 > median(ch2_1) [1] 65
제 3 장기본분석 _ 55 > Mode(ch2_1) [1] "85" > bins<-c(0, 12, 24, 36, 48, 60, 72, 84, 97) > class<-cut(ch2_1, breaks=bins) > table(class) class (0,12] (12,24] (24,36] (36,48] (48,60] (60,72] (72,84] (84,97] 1 2 4 6 7 9 8 13 > table(class)/length(ch2_1) class (0,12] (12,24] (24,36] (36,48] (48,60] (60,72] (72,84] (84,97] 0.02 0.04 0.08 0.12 0.14 0.18 0.16 0.26 > transform(table(class), Rel_Freq=prop.table(Freq)) class Freq Rel_Freq 1 (0,12] 1 0.02 2 (12,24] 2 0.04 3 (24,36] 4 0.08 4 (36,48] 6 0.12 5 (48,60] 7 0.14 6 (60,72] 9 0.18 7 (72,84] 8 0.16 8 (84,97] 13 0.26 > hist(ch2_1) > hist(ch2_1, breaks=bins, main="test Scores", xlab="score") > summary(ch2_1) Min. 1st Qu. Median Mean 3rd Qu. Max. 12.00 48.25 65.00 64.76 84.50 97.00
56 _ R 기초및통계분석 > 수치 <-c(70, 17, 8, 3, 2) > 경제책임 <-c(" 정부 ", " 대기업 ", " 금융기관 ", " 근로자 ", " 모두 ") > 경제책임 <-paste( 경제책임, 수치 ) > 경제책임 <-paste( 경제책임, "%", sep=" ") > pie( 수치, labels= 경제책임, col=rainbow(length( 경제책임 )), main=" 경제위기의책임 ")
제 3 장기본분석 _ 57 4. 평균의계산 평균을구하는방법은산술평균 (arithmetic mean), 조화평균 (harmonic mean), 기하평균 (geometric mean) 등이있다. n개의변수의산술평균은변수들의총합을변수의개수 n으로나눈값이다. 조화평균은 n개의양수에대하여그역수들을산술평균한것의역수를말한다. 예를들어, 두지점 A, B를갈때는 'a' km/h의속도로, 올때는 'b' km/h의속도로왕복했다면이사람의평균속력은 a와 b의조화평균에해당된다. n개의양수인변수의조화평균은그변수의역수를산술평균한것의역수이다. 예를들어, 자동차가처음 10km를시속 30km로달리고, 다음 10km를시속 60km로달렸을경우평균시속은산술평균인 45km/h가아니고조화평균인 40km/h 이다. 기하평균은여러개의수를연속으로곱해그개수의거듭제곱근으로구한수로흔히연평균인구증가율이나연평균경제성장률을구할때적용된다. 예를들어, 2014년부터 2017년까지의인구변화가다음의표와같을때전년도대비비율을구하면각각 120%, 130%, 118% 가되는데이경우 2014년부터 2017년까지의연평균인구증가율은산술평균인 122.67이아니고기하평균인 122.56이다. 그이유는 2014년부터산술평균으로구한연평균증가율을매년곱하여 2017년인구를
58 _ R 기초및통계분석 구해보면 9228명이되어실제인구 9204명과차이가발생하지만기하평균으로구한연평균증가율을매년곱하여 2017년인구를구해보면 9204명이되어실제인구와동일하게된다. 기하평균의장점중의하나는최초년도부터최종년도까지데이터가모두없어도최초년도와최종년도의데이터만있으면다음의식에의해연평균증가율계산이가능하다는점이다. 최종년도의값, n은경과년도를나타냄최초년도의값 연도 인구 전년대비비율 (%) 전년도인구 전년도인구 2014 5000 - - - 2015 6000 120 6133 6128 2016 7800 130 7523 7510 2017 9204 118 9228 9204 - - - b1-ch3-10.r 을실행하면산술평균, 조화평균, 기하평균을각각구할수있다. b1-ch3-10.r 의실행결과 > a<-c(10, 2, 19, 24, 6, 23, 47, 24, 54, 77) > n<-length(a) # now n is equal to the number of elements in a > mean(a) [1] 28.6 > 1/mean(1/a) # compute the harmonic mean [1] 10.01109 > prod(a)^(1/n) # compute the geometric mean [1] 18.92809
제 3 장기본분석 _ 59 > b<-c(30,60) > mean(b) [1] 45 > 1/mean(1/b) [1] 40 > c<-c(120,130,118) > m<-length(c) > round(mean(c),digits=2) [1] 122.67 > round(prod(c)^(1/m),digits=2) [1] 122.56 > g<-((9204/5000)^(1/3)-1)*100 > round(g, digits=2) [1] 22.56 # 연평균증가율이 22.565임을나타냄 5. 두확률변수의공분산 두이산형확률변수의확률분포표가다음과같이주어져있을경우이를이용하여두확률변수의각각의분산과두확률변수의공분산을구할수있다. X Y 0 1 2 합 1 1/6 1/12 1/12 1/3 3 1/12 1/2 1/12 2/3 합 1/4 7/12 1/6 1
60 _ R 기초및통계분석 b1-ch3-11.r을실행하면두확률변수의각각의분산을구할수있다. 또한두확률변수의공분산및상관계수를각각구할수있다. b1-ch3-11.r 의실행결과 > data<-c(0.167, 0.083, 0.083, 0.333, 0.083, 0.5, 0.083, 0.667, 0.25, 0.583, 0.167, 1) > mat<-matrix(data, nrow=3, byrow=t) > rownames(mat)<-c("1", "3", " 합계 ") > colnames(mat)<-c("0", "1", "2", " 합계 ") > mat 0 1 2 합계 1 0.167 0.083 0.083 0.333 3 0.083 0.500 0.083 0.667 합계 0.250 0.583 0.167 1.000 > mu_x<-1*mat[1,4]+3*mat[2,4] > mu_y<-0*mat[3,1]+1*mat[3,2]+2*mat[3,3] > mu_x [1] 2.334 > mu_y [1] 0.917 > var_x<-1^2*mat[1,4]+3^2*mat[2,4]- mu_x^2 > var_y<-0^2*mat[3,1]+1^2*mat[3,2]+2^2*mat[3,3]-mu_y^2 > var_x [1] 0.888444
제 3 장기본분석 _ 61 > var_y [1] 0.410111 > p_xy<-c(0.167, 0.083, 0.083, 0.083, 0.5, 0.083) > xy<-c(0,1,2,0,3,6) > cov_xy<-sum(p_xy*xy)-(mu_x*mu_y) > cov_xy [1] 0.106722 > corr_xy<-cov_xy/sqrt(var_x*var_y) > corr_xy [1] 0.1768024
제 4 장 이론적확률분포 1. 이론적확률분포의관계 2. 베르누이분포 3. 이항분포 4. 포아송분포 5. 균등분포 6. 표준정규분포 7. -분포 8. t-분포 9. F-분포
64 _ R 기초및통계분석 제 4 장 이론적확률분포 1. 이론적확률분포의관계 이론적확률분포는 < 그림 4-1> 에나타나있는바와같이크게이산형확률분포와연속형확률분포로나누어진다. 이산형확률분포에는포아송분포와이항분포가있는데이항분포에서 n이크고, p 가작으면포아송분포와유사하게된다. 이산형확률분포인이항분포에서 n이크고, p가 0.5이면연속형확률분포중정규분포와유사하게된다. 정규분포를평균이 0, 표준편차가 1이되게표준화하면표준정규분포가되는데이분포가연속형확률분포의출발이된다. 서로독립적인표준정규분포의제곱의합은 ( 카이제곱 )-분포에따르게되며, -분포의모양은자유도에의해결정되는데이에대한자세한설명은 -분포에서한다. 표준정규분포에서 n이작고, 분산을모를경우 t-분포에따르게되며, t-분포의모양은자유도에의해결정되는데이에대한자세한설명은 t-분포에서한다. 서로독립적인두개의 -분포의비율은 F-분포에따르게되며, F-분포의모양은분자및분모의자유도에의해결정되는데이에대한자세한설명은 F-분포에서한다. 자유도가 n인 t-분포에따르는 t-통계량을제곱하면분모의자유도가 1이고분자의자유도가 n인 F-분포와동일하다. 이외에도이산형확률분포로서베르누이분포와연속형확률분포로서균등분포등이있다.
제 4 장이론적확률분포 _ 65 < 그림 4-1> 이론적확률분포의관계 2. 베르누이분포 실험에서결과가둘중의하나로나타나는실험을베르누이시행 (Bernoulli trial) 이라고하는데그중하나를성공 (success: s) 이라하고다른하나를실패 (failure: f) 라고정의한다. 따라서베르누이시행은실험의결과가 s 또는 f 인확률실험이라고할수있으며, 표본공간은 Ω= {s, f} 가된다. 이실험에서결과가 s일확률이 p라면확률의기본원리에의하여실험결과가 f일확률은 1-p이다. 베르누이시행에서결과가 s이면 1 이고, 결과가 f이면 0 이라고정의된확률변수를베르누이확률변수라고하고, 베르누이확률변수 X의확률분포는다음과같다. 베르누이분포의모양은확률 p의값에의하여결정되므로이분포의모수는 p이므로 X Bernoulli(p) 로정의한다. 베르누이분포의모양은확률 p의값에의하여결정되므로이분포의모수는 p이며, 베르누이분포의평균은 p, 분산은 p(1-p) 이다.
66 _ R 기초및통계분석 동일한실험을무한히반복할때한사건에대하여상대도수에의하여계산된확률은고전적의미의확률에접근한다고할수있다. 동전을던지는실험은그결과가앞면과뒷면밖에없는데동전을던지는실험을무한히반복하면동전의앞면이나오는확률은 0.5로점근적으로수렴한다. b1-ch4-1.r을실행하면동전을던지는실험을번복할수록동전의앞면이나오는확률이 0.5로수렴하는것을볼수있다. > set.seed(12345) b1-ch4-1.r 의실행결과 > x<-rbinom(1000, 1,.5) > (table(x)) x 0 1 469 531 > (mean(x)) [1] 0.531 > cx<-cumsum(x) > heads<-numeric(1000) > for (i in 1:1000) { + heads[i]<-cx[i]/i + } > plot(heads, type="l", xlab="number of Trials", ylab="proportion of Heads", ylim=c(0,1), main="proportion of Heads")
제 4 장이론적확률분포 _ 67 Proportion of Heads Proportion of Heads 0.0 0.2 0.4 0.6 0.8 1.0 0 200 400 600 800 1000 Number of Trials 3. 이항분포 (1) 이항분포의모양 이항분포 (binomial distribution) 는베르누이시행을독립적으로 n번반복했을때나타나는결과에있어서성공 (s) 의횟수에대한분포를구하는것이다. 성공의확률이 p이고실패의확률이 q(q = 1 p) 인베르누이시행을독립적으로 n번반복하였을때나타나는성공의횟수를확률변수 X 라고할때, X를이항확률변수 (binomial random variable) 라하고, X B(n,p) 로정의하며확률분포는다음과같다 이항분포에서모수는각시행에서성공이나타날확률 p와시행횟수 n이며, 이항분포의평균은 np, 분산은 npq이다. 이항분포는성공확률 p가 0.5이면평균 을중심으로좌우대칭인분포를가지며, n과 p의크기에따라모양이결정된다.
68 _ R 기초및통계분석 b1-ch4-2.r을실행하면 n과 p에따라이항분포의모양이변하는것을확인할수있으며, p=0.5이고 n이커질때좌우대칭의정규분포와유사함을확인할수있다. set.seed(12345) b1-ch4-2.r 의실행결과 r<-10000 binom1<-rbinom(r, 10, 0.1) binom2<-rbinom(r, 10, 0.5) binom3<-rbinom(r, 20, 0.5) par(mfrow=c(1,3)) hist(binom1, breaks=100, xlab="n=10 p=0.1") hist(binom2, breaks=100, xlab="n=10 p=0.5") hist(binom3, breaks=100, xlab="n=20 p=0.5") Histogram of binom1 Histogram of binom2 Histogram of binom3 Frequency 0 1000 2000 3000 4000 Frequency 0 500 1000 1500 2000 2500 Frequency 0 500 1000 1500 0 2 4 6 0 2 4 6 8 5 10 15 n=10 p=0.1 n=10 p=0.5 n=20 p=0.5
제 4 장이론적확률분포 _ 69 b1-ch4-3.r을실행하면 n이주어진상태에서 p에따라이항분포의모양이변하는것을확인할수있으며, p=0.5에가까울수록좌우대칭의정규분포와유사함을확인할수있다. b1-ch4-3.r 의실행결과 par(mfrow=c(2,2)) # 한페이지에그림을좌우상하하나씩 4개를그림 > par(mfrow=c(2,2)) > n<-25 # 시행횟수 > p_list<-c(0.1, 0.2, 0.5, 0.7) # 발생확률 > for (i in 1:length(p_list)) { + p_x<-dbinom(x=1:n, n, p_list[i]) + plot(x=1:n, p_x, xlab="x", ylab="p(x=x)", + ylim=c(0, 0.3), xli... [TRUNCATED] p= 0.1 p= 0.2 P(X=x) 0.00 0.15 0.30 P(X=x) 0.00 0.15 0.30 5 10 15 20 25 5 10 15 20 25 x x p= 0.5 p= 0.7 P(X=x) 0.00 0.15 0.30 P(X=x) 0.00 0.15 0.30 5 10 15 20 25 5 10 15 20 25 x x
70 _ R 기초및통계분석 (2) 이항분포의확률분포표 n이 5이고성공확률 p가다음의표와같을때주어진성공확률에서다음과같이 5 번시행하여 a번성공하는누적확률을구할수있다. a 0.10 0.20 0.30 0.40 0.50 0.60 0.70 0.80 0.90 0.95 0.590.328.168.078.031.010.002.000.000.000 1.919.737.528.337.187.087.031.007.000.000 2.991.942.837.683.500.317.163.058.009.001 3 1.00.993.969.914.813.663.472.263.081.023 4 1.00 1.00.998.990.969.922.832.672.410.226 b1-ch4-4.r을실행하면위와동일한누적이항확률분포표를만들수있음을확인할수있다. > binom11<-rep(na,5) b1-ch4-4.r 의실행결과 > binom12<-rep(na,5) > binom13<-rep(na,5) > binom11[1]<-pbinom(0, 5, 0.1) > binom12[1]<-pbinom(0, 5, 0.2) > binom13[1]<-pbinom(0, 5, 0.3) > for(i in 2:5) { + binom11[i]<-pbinom(i-1, 5, 0.1) + }
제 4 장이론적확률분포 _ 71 > for(i in 2:5) { + binom12[i]<-pbinom(i-1, 5, 0.2) + } > for(i in 2:5) { + binom13[i]<-pbinom(i-1, 5, 0.3) + } > (binom<-cbind(binom11,binom12, binom13)) binom11 binom12 binom13 [1,] 0.59049 0.32768 0.16807 [2,] 0.91854 0.73728 0.52822 [3,] 0.99144 0.94208 0.83692 [4,] 0.99954 0.99328 0.96922 [5,] 0.99999 0.99968 0.99757 > source('~/.active-rstudio-document', echo=true) > binom11<-rep(na,5) > binom12<-rep(na,5) > binom13<-rep(na,5) > binom14<-rep(na,5) > binom15<-rep(na,5) > binom16<-rep(na,5) > binom17<-rep(na,5) > binom18<-rep(na,5) > binom19<-rep(na,5) > binom11[1]<-pbinom(0, 5, 0.1)
72 _ R 기초및통계분석 > binom12[1]<-pbinom(0, 5, 0.2) > binom13[1]<-pbinom(0, 5, 0.3) > binom14[1]<-pbinom(0, 5, 0.4) > binom15[1]<-pbinom(0, 5, 0.5) > binom16[1]<-pbinom(0, 5, 0.6) > binom17[1]<-pbinom(0, 5, 0.7) > binom18[1]<-pbinom(0, 5, 0.8) > binom19[1]<-pbinom(0, 5, 0.9) > for(i in 2:5) { + binom11[i]<-pbinom(i-1, 5, 0.1) + } > for(i in 2:5) { + binom12[i]<-pbinom(i-1, 5, 0.2) + } > for(i in 2:5) { + binom13[i]<-pbinom(i-1, 5, 0.3) + } > for(i in 2:5) { + binom14[i]<-pbinom(i-1, 5, 0.4) + } > for(i in 2:5) { + binom15[i]<-pbinom(i-1, 5, 0.5) + }
제 4 장이론적확률분포 _ 73 > for(i in 2:5) { + binom16[i]<-pbinom(i-1, 5, 0.6) + } > for(i in 2:5) { + binom17[i]<-pbinom(i-1, 5, 0.7) + } > for(i in 2:5) { + binom18[i]<-pbinom(i-1, 5, 0.8) + } > for(i in 2:5) { + binom19[i]<-pbinom(i-1, 5, 0.9) + } > round((binom<-cbind(binom11,binom12, binom13,binom14,binom15, binom16,binom17,binom18, binom19)),digits=3) binom11 binom12 binom13 binom14 binom15 binom16 binom17 binom18 binom19 [1,] 0.590 0.328 0.168 0.078 0.031 0.010 0.002 0.000 0.000 [2,] 0.919 0.737 0.528 0.337 0.187 0.087 0.031 0.007 0.000 [3,] 0.991 0.942 0.837 0.683 0.500 0.317 0.163 0.058 0.009 [4,] 1.000 0.993 0.969 0.913 0.812 0.663 0.472 0.263 0.081 [5,] 1.000 1.000 0.998 0.990 0.969 0.922 0.832 0.672 0.410 4. 포아송분포 (1) 포아송분포의모양 포아송분포 (poison distribution) 는주어진단위시간, 거리, 영역등에서어떤사건이발생하는횟수를측정하는확률분포를말한다. 특정지역에서제한된시간내에발생하는교통사고수의분포나자동생산라인에서특정시간에발생하는불량품수의분포등이대표적인포아송분포에따른다.
74 _ R 기초및통계분석 단위구간내에서어떤사건이평균 회발생한다고하고, 확률변수 X를사건의발생횟수라고할때, X Poisson (µ) 로표현하며사건이 k번발생될확률은다음과같다. ( 예제 ) 최근올림픽도로에서는하루평균 5건의교통사고가발생한다. 교통사고의발생횟수가포아송분포를따른다고할때, 다음의확률을계산하라 1 어느날교통사고가전혀일어나지않을확률은얼마인가? > poi1<-ppois(0, 5.0) # 평균이 5인포아송분포에서 P(x=0) 일확률 > poi1 [1] 0.006737947 2 어느날교통사고가 3 번이상일어날확률은얼마인가? > poi2<-1-(ppois(2, 5.0)) # 평균이 5인포아송분포에서 1-P(x<3) 일확률 > poi2 [1] 0.875348 포아송분포에서모수는평균 이며, 포아송분포의평균은 이고, 분산도 이다. 포아송분포의모양은평균이작을때는좌우비대칭이나평균이증가함에따라평균을중심으로좌우대칭의모양으로변한다. 즉, 정규분포에가까워지고, 분산은커진다. b1-ch4-5.r을실행하면평균 에따라포아송분포의모양이변하는것을확인할수있으며, 평균 가커질때좌우대칭의분포에가까워지는것을확인할수있다. b1-ch4-5.r 의실행결과 set.seed(12345) n<-10000;
제 4 장이론적확률분포 _ 75 poi025<-rpois(n, 0.25) poi1<-rpois(n, 1) poi2<-rpois(n, 2) poi4<-rpois(n, 4) par(mfrow=c(2,2)) hist(poi025, breaks=100, xlab="mu=0.25") hist(poi1, breaks=100, xlab="mu=1.0") hist(poi2, breaks=100, xlab="mu=2.0") hist(poi4, breaks=100, xlab="mu=4.0") Histogram of poi025 Histogram of poi1 Frequency 0 4000 8000 Frequency 0 2000 0 1 2 3 4 mu=0.25 0 1 2 3 4 5 6 7 mu=1.0 Histogram of poi2 Histogram of poi4 Frequency 0 1000 2500 Frequency 0 1000 2000 0 2 4 6 8 mu=2.0 0 2 4 6 8 10 12 14 mu=4.0 b1-ch4-6.r을실행하면평균 에따라포아송분포의모양이변하는것을확인할수있으며, 가커질수록좌우대칭의정규분포와유사함을확인할수있다. b1-ch4-6.r 의실행결과 > par(mfrow=c(2,2)) # 한페이지에그림을좌우상하하나씩 4 개를그림 > lambda_list<-c(3, 5, 10, 15) # 평균
76 _ R 기초및통계분석 > x_list<-30 # 발생횟수를 1 부터 x 축에보여줄최대값 > for (i in 1:length(lambda_list)) { + p_x<-dpois(x=0:x_list,lambda_list[i]) + plot(x=0:x_list, p_x, xlab="x", ylab="p(x=x)", ylim=c(0, 0.25),... [TRUNCATED] lambda= 3 lambda= 5 P(X=x) 0.00 0.15 P(X=x) 0.00 0.15 0 5 10 15 20 25 30 0 5 10 15 20 25 30 x x lambda= 10 lambda= 15 P(X=x) 0.00 0.15 P(X=x) 0.00 0.15 0 5 10 15 20 25 30 0 5 10 15 20 25 30 x x (2) 포아송분포의확률분포표 평균 가다음의표와같을때어떤사건이발생되는횟수의누적확률을구할수있다. 기댓값
제 4 장이론적확률분포 _ 77 c 0.02 0.04 0.06 0.08 0.10 0.20 0.30 0.40 0 0.980 0.961 0.942 0.923 0.905 0.819 0.741 0.670 1 1.000 0.999 0.998 0.997 0.995 0.982 0.963 0.938 2 1.000 1.000 1.000 1.000 1.000 0.999 0.996 0.992 3 1.000 1.000 1.000 1.000 1.000 1.000 1.000 0.999 4 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 b1-ch4-7.r을실행하면위와동일한누적포아송확률분포표를만들수있음을확인할수있다. > poi11<-rep(na,5) b1-ch4-7.r 의실행결과 > poi12<-rep(na,5) > poi13<-rep(na,5) > poi14<-rep(na,5) > poi15<-rep(na,5) > poi16<-rep(na,5) > poi17<-rep(na,5) > poi18<-rep(na,5) > poi11[1]<-ppois(0, 0.02) > poi12[1]<-ppois(0, 0.04) > poi13[1]<-ppois(0, 0.06) > poi14[1]<-ppois(0, 0.08)
78 _ R 기초및통계분석 > poi15[1]<-ppois(0, 0.1) > poi16[1]<-ppois(0, 0.2) > poi17[1]<-ppois(0, 0.3) > poi18[1]<-ppois(0, 0.4) > for(i in 2:5) { + poi11[i]<-ppois(i-1, 0.02) + } > for(i in 2:5) { + poi12[i]<-ppois(i-1, 0.04) + } > for(i in 2:5) { + poi13[i]<-ppois(i-1, 0.06) + } > for(i in 2:5) { + poi14[i]<-ppois(i-1, 0.08) + } > for(i in 2:5) { + poi15[i]<-ppois(i-1, 0.1) + } > for(i in 2:5) { + poi16[i]<-ppois(i-1, 0.2) + } > for(i in 2:5) { + poi17[i]<-ppois(i-1, 0.3) + } > for(i in 2:5) {
제 4 장이론적확률분포 _ 79 + poi18[i]<-ppois(i-1, 0.4) + } > round((poi<-cbind(poi11,poi12,poi13,poi14,poi15,poi16,poi17,poi18)),digits=3) poi11 poi12 poi13 poi14 poi15 poi16 poi17 poi18 [1,] 0.98 0.961 0.942 0.923 0.905 0.819 0.741 0.670 [2,] 1.00 0.999 0.998 0.997 0.995 0.982 0.963 0.938 [3,] 1.00 1.000 1.000 1.000 1.000 0.999 0.996 0.992 [4,] 1.00 1.000 1.000 1.000 1.000 1.000 1.000 0.999 [5,] 1.00 1.000 1.000 1.000 1.000 1.000 1.000 1.000 5. 균등분포 균등분포 (uniform distribution) 는연속형분포에서가장단순한분포형태로특정구간내의값들이나타날가능성이균등한분포를말한다. 연속형확률변수 X가실수구간 [a,b] 에서나타날가능성이균등할때, X는균등분포를따른다고하며 X U(a,b) 로표현한다. X의확률밀도함수는다음과같다 다른곳에서 확률변수 X가 X U(a,b) 라고할때, X의평균은, 분산은 이다. b1-ch4-8.r을실행하면 X U(1,2), X U(2,4), X U(4,8), X U(5,10) 에서 X 가각각실수구간에서나타날가능성이균등함을확인할수있다.
80 _ R 기초및통계분석 b1-ch4-8.r 의실행결과 set.seed(12345) n<-10000; min_list<-c(1,2,4,5) max_list<-c(2,4,8,10) par(mfrow=c(2,2)) unif1<-runif(n, min=1, max=2) unif2<-runif(n, min=2, max=4) unif3<-runif(n, min=4, max=8) unif4<-runif(n, min=5, max=10) (munif1<-mean(unif1)) (munif2<-mean(unif2)) (munif3<-mean(unif3)) (munif4<-mean(unif4)) (vunif1<-var(unif1)) (vunif2<-var(unif2)) (vunif3<-var(unif3)) (vunif4<-var(unif4)) for (i in 1:length(min_list)) { hist(runif(n, min=min_list[i], max=max_list[i]), freq=f, breaks=100, xlab="x", main=paste("min =", min_list[i], " max =", max_list[i])) }
제 4 장이론적확률분포 _ 81 min = 1 max = 2 min = 2 max = 4 Density 0.0 0.6 1.2 Density 0.0 0.3 0.6 1.0 1.2 1.4 1.6 1.8 2.0 2.0 2.5 3.0 3.5 4.0 x x min = 4 max = 8 min = 5 max = 10 Density 0.00 0.15 0.30 Density 0.00 0.15 4 5 6 7 8 5 6 7 8 9 10 x x 6. 표준정규분포 정규분포란다음의 < 그림 4-2> 와같이분포의형태가종을엎어놓은모양인분포 를말하며, 분포의형태는평균 와분산 에의해결정된다. < 그림 4-2> 정규분포의모양및확률밀도함수
82 _ R 기초및통계분석 확률변수 X가평균 와분산 을갖는정규분포를따른다면 라고표현하며, X의확률밀도함수는다음과같다., 확률변수 Z가평균이 0이고분산이 1인정규분포를따를때 Z는표준정규분포를따른다고하며, 로표현하고, Z의확률밀도함수는다음과같다., 표준정규분포의형태는 < 그림 4-3> 과같으며, 중심 0에서부터양의값 z까지의확률은색칠한부분의넓이와같다 < 그림 4-3> 표준정규분포의모양및확률밀도함수 z 가 0.45 이면 0 부터 z 까지의확률은 0.1736 이된다. z 0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.0 0.0000 0.0040 0.0080 0.0120 0.0160 0.0199 0.0239 0.0279 0.0319 0.0359 0.1 0.0398 0.0438 0.0478 0.0517 0.0557 0.0596 0.0636 0.0675 0.0714 0.0753 0.2 0.0793 0.0832 0.0871 0.0910 0.0948 0.0987 0.1026 0.1064 0.1103 0.1141 0.3 0.1179 0.1217 0.1255 0.1293 0.1331 0.1368 0.1406 0.1443 0.1480 0.1517 0.4 0.1554 0.1591 0.1628 0.1664 0.1700 0.1736 0.1772 0.1808 0.1844 0.1879
제 4 장이론적확률분포 _ 83 b1-ch4-9.r을실행하면위와동일한표준정규분포표를만들수있음을확인할수있다. b1-ch4-9.r의실행결과 > z00<-rep(na,10) > z01<-rep(na,10) > z02<-rep(na,10) > z03<-rep(na,10) > z04<-rep(na,10) > for(i in 1:10) { + z00[i]<-pnorm((i-1)/100, 0, 1)-0.5 + } > (z00<-round(z00, digits=4)) [1] 0.0000 0.0040 0.0080 0.0120 0.0160 0.0199 0.0239 0.0279 0.0319 0.0359 > for(i in 10:19) { + z01[i]<-pnorm(i/100, 0, 1)-0.5 + } > (z01<-round(z01[10:19], digits=4)) [1] 0.0398 0.0438 0.0478 0.0517 0.0557 0.0596 0.0636 0.0675 0.0714 0.0753 > for(i in 20:29) { + z02[i]<-pnorm(i/100, 0, 1)-0.5 + } > (z02<-round(z02[20:29], digits=4)) [1] 0.0793 0.0832 0.0871 0.0910 0.0948 0.0987 0.1026 0.1064 0.1103 0.1141 > for(i in 30:39) { + z03[i]<-pnorm(i/100, 0, 1)-0.5 + } > (z03<-round(z03[30:39], digits=4))
84 _ R 기초및통계분석 [1] 0.1179 0.1217 0.1255 0.1293 0.1331 0.1368 0.1406 0.1443 0.1480 0.1517 > for(i in 40:49) { + z04[i]<-pnorm(i/100, 0, 1)-0.5 + } > (z04<-round(z04[40:49], digits=4)) [1] 0.1554 0.1591 0.1628 0.1664 0.1700 0.1736 0.1772 0.1808 0.1844 0.1879 > zdist<-rbind(z00,z01,z02,z03,z04) > (zdist<-round(zdist, digits=4)) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] z00 0.0000 0.0040 0.0080 0.0120 0.0160 0.0199 0.0239 0.0279 0.0319 0.0359 z01 0.0398 0.0438 0.0478 0.0517 0.0557 0.0596 0.0636 0.0675 0.0714 0.0753 z02 0.0793 0.0832 0.0871 0.0910 0.0948 0.0987 0.1026 0.1064 0.1103 0.1141 z03 0.1179 0.1217 0.1255 0.1293 0.1331 0.1368 0.1406 0.1443 0.1480 0.1517 z04 0.1554 0.1591 0.1628 0.1664 0.1700 0.1736 0.1772 0.1808 0.1844 0.1879 7. - 분포 (1) - 분포의모양 표준정규분포의제곱의합이카이제곱분포에따른다. 확률변수 이서 로독립적으로표준정규분포에따를때, 의제곱합 은자유도가 n 인 - 분포를따른다. 자유도가 n 인 - 분포의평균은 n, 분산은 2n 이다. b1-ch4-10.r을실행하면자유도가 5인 -분포및 density를그려주고있는데평균이 5에근사함을확인할수있다.
제 4 장이론적확률분포 _ 85 b1-ch4-10.r 의실행결과 > set.seed(12345) > n<-10000; > z1<-rnorm(n,0,1) > z2<-rnorm(n,0,1) > z3<-rnorm(n,0,1) > z4<-rnorm(n,0,1) > z5<-rnorm(n,0,1) > chi5<-z1^2+z2^2+z3^2+z4^2+z5^2 > hist(chi5, freq=f, col="grey", xlab="", xlim=c(0, 25), breaks=100) > par(new=t) > plot(density(chi5), axes=f, main="", xlim=c(0, 25), lwd=2, col="blue") Histogram of chi5 Density 0.00 0.05 0.10 0.15 0 5 10 15 20 25 N = 10000 Bandwidth = 0.425
86 _ R 기초및통계분석 b1-ch4-11.r을실행하면각각자유도가 5, 10, 20, 30인 -분포를그려주고있는데자유도에따라 -분포의모양이변하는것을확인할수있다. > set.seed(12345) b1-ch4-11.r 의실행결과 > n<-10000; > df_list<-c(5,10,20,30) > par(mfrow=c(2,2)) > for (i in 1:length(df_list)) { + hist(rchisq(n, df=df_list[i], ncp=0), breaks=100, xlab="chisq", main=paste("df=", df_list[i])) + } df= 5 df= 10 Frequency 0 100 200 300 Frequency 0 200 400 0 5 10 15 20 25 chisq 0 10 20 30 chisq df= 20 df= 30 Frequency 0 100 200 300 Frequency 0 100 200 300 10 20 30 40 50 chisq 10 20 30 40 50 60 70 chisq - 분포는자유도가모수이므로자유도의크기에따라분포의형태가달라진다.
제 4 장이론적확률분포 _ 87 b1-ch4-12.r을실행하면각각자유도가 1, 4, 6, 8인 -분포를그려주고있는데자유도에따라 -분포의모양이변하는것을확인할수있으며, 자유도가클수록정규분포와근사한분포형태를갖는다. > n_list<-c(2,5,7,9) # 표본수 (n) b1-ch4-12.r 의실행결과 > df_list<-n_list-1 # 자유도 > curve(dchisq(x, 1, ncp=0), add=t, col="blue", xlim=c(0, 16), ylim=c(0, 0.8), xlab="chisq", ylab="f(chisq)") > curve(dchisq(x, 4, ncp=0), add=t, col="red", xlim=c(0, 16), ylim=c(0, 0.8), xlab="chisq", ylab="f(chisq)") > curve(dchisq(x, 6, ncp=0), add=t, col="green", xlim=c(0, 16), ylim=c(0, 0.8), xlab="chisq", ylab="f(chisq)") > curve(dchisq(x, 8, ncp=0), add=t, col="black", xlim=c(0, 16), ylim=c(0, 0.8), xlab="chisq", ylab="f(chisq)") > par(mfrow=c(2,2)) > for (i in 1:length(df_list)) { + + curve(dchisq(x, df_list[i], ncp=0), add=f, xlim=c(0, 16), ylim=c(0, 0.8), xlab="chisq", ylab="f(chisq)", mai... [TRUNCATED]
88 _ R 기초및통계분석 df= 1 df= 4 f(chisq) 0.0 0.4 0.8 f(chisq) 0.0 0.4 0.8 0 5 10 15 chisq 0 5 10 15 chisq df= 6 df= 8 f(chisq) 0.0 0.4 0.8 f(chisq) 0.0 0.4 0.8 0 5 10 15 chisq 0 5 10 15 chisq (2) - 분포의확률분포표 - 분포는자유도 n-1 에따라형태가다르므로각각의자유도및확률에따른 의값이다음과같이주어져있다. 자유도가 5일때 인데, 이는 을의미한다.
제 4 장이론적확률분포 _ 89 자유도 P=0.99 0.95 0.90 0.10 0.05 0.01 1 0.000157 0.00393 0.0158 2.706 3.841 6.635 2 0.0201 0.103 0.211 4.605 5.991 9.210 3 0.115 0.352 0.584 6.251 7.815 11.341 4 0.297 0.711 1.064 7.779 9.488 13.277 5 0.554 1.145 1.610 9.236 11.070 15.086 6 0.872 1.635 2.204 10.645 12.592 16.812 7 1.239 2.167 2.833 12.017 14.067 18.475 8 1.646 2.733 3.490 13.362 15.507 20.090 9 2.088 3.325 4.168 14.684 16.919 21.666 10 2.558 3.940 4.865 15.987 18.307 23.209 11 3.053 4.575 5.578 17.275 19.675 24.725 12 3.571 5.226 6.034 18.549 21.026 26.217 13 4.017 5.892 7.042 19.812 22.362 27.688 14 4.660 6.517 7.790 21.064 23.685 29.141 15 5.229 7.261 8.547 22.307 24.996 30.578 16 5.812 7.962 9.312 23.542 26.296 32.000 17 6.408 8.672 10.085 24.769 27.587 33.409 18 7.015 9.390 10.865 25.989 28.869 34.805 19 7.633 10.117 11.651 27.204 30.144 36.191 20 8.260 10.851 12.443 28.412 31.410 37.566 21 8.897 11.591 13.240 29.615 32.671 38.932 22 9.542 12.338 14.041 30.813 33.924 40.289 23 10.196 13.091 14.848 32.007 35.172 41.638 24 10.856 13.848 15.659 33.196 36.415 42.980 25 11.524 14.611 16.473 34.382 37.652 44.314 26 12.198 15.379 17.292 36.563 38.885 45.642 27 12.879 16.151 18.114 36.741 40.113 46.963 28 13.565 16.928 18.939 37.916 41.337 48.278 29 14.256 17.708 19.768 39.087 42.557 49.588 30 14.953 18.493 30.599 40.256 43.773 50.892 b1-ch4-13.r 을실행하면위와동일한 - 분포표를만들수있음을확인할수있다.
90 _ R 기초및통계분석 b1-ch4-13.r 의실행결과 > df<-30 > chi1<-numeric(df) > chi2<-numeric(df) > chi3<-numeric(df) > chi4<-numeric(df) > chi5<-numeric(df) > chi6<-numeric(df) > for(j in 1:df) { + chi1[j]<-qchisq(0.01,j) + } > for(j in 1:df) { + chi2[j]<-qchisq(0.05,j) + } > for(j in 1:df) { + chi3[j]<-qchisq(0.1,j) + } > for(j in 1:df) { + chi4[j]<-qchisq(0.9,j) + } > for(j in 1:df) { + chi5[j]<-qchisq(0.95,j) + } > for(j in 1:df) { + chi6[j]<-qchisq(0.99,j)
제 4 장이론적확률분포 _ 91 + } > round((chi<-cbind(chi1,chi2,chi3,chi4,chi5, chi6)),digits=4) chi1 chi2 chi3 chi4 chi5 chi6 [1,] 0.0002 0.0039 0.0158 2.7055 3.8415 6.6349 [2,] 0.0201 0.1026 0.2107 4.6052 5.9915 9.2103 [3,] 0.1148 0.3518 0.5844 6.2514 7.8147 11.3449 [4,] 0.2971 0.7107 1.0636 7.7794 9.4877 13.2767 [5,] 0.5543 1.1455 1.6103 9.2364 11.0705 15.0863 [6,] 0.8721 1.6354 2.2041 10.6446 12.5916 16.8119 [7,] 1.2390 2.1673 2.8331 12.0170 14.0671 18.4753 [8,] 1.6465 2.7326 3.4895 13.3616 15.5073 20.0902 [9,] 2.0879 3.3251 4.1682 14.6837 16.9190 21.6660 [10,] 2.5582 3.9403 4.8652 15.9872 18.3070 23.2093 [11,] 3.0535 4.5748 5.5778 17.2750 19.6751 24.7250 [12,] 3.5706 5.2260 6.3038 18.5493 21.0261 26.2170 [13,] 4.1069 5.8919 7.0415 19.8119 22.3620 27.6882 [14,] 4.6604 6.5706 7.7895 21.0641 23.6848 29.1412 [15,] 5.2293 7.2609 8.5468 22.3071 24.9958 30.5779 [16,] 5.8122 7.9616 9.3122 23.5418 26.2962 31.9999 [17,] 6.4078 8.6718 10.0852 24.7690 27.5871 33.4087 [18,] 7.0149 9.3905 10.8649 25.9894 28.8693 34.8053 [19,] 7.6327 10.1170 11.6509 27.2036 30.1435 36.1909 [20,] 8.2604 10.8508 12.4426 28.4120 31.4104 37.5662 [21,] 8.8972 11.5913 13.2396 29.6151 32.6706 38.9322 [22,] 9.5425 12.3380 14.0415 30.8133 33.9244 40.2894 [23,] 10.1957 13.0905 14.8480 32.0069 35.1725 41.6384 [24,] 10.8564 13.8484 15.6587 33.1962 36.4150 42.9798 [25,] 11.5240 14.6114 16.4734 34.3816 37.6525 44.3141 [26,] 12.1981 15.3792 17.2919 35.5632 38.8851 45.6417 [27,] 12.8785 16.1514 18.1139 36.7412 40.1133 46.9629 [28,] 13.5647 16.9279 18.9392 37.9159 41.3371 48.2782 [29,] 14.2565 17.7084 19.7677 39.0875 42.5570 49.5879 [30,] 14.9535 18.4927 20.5992 40.2560 43.7730 50.8922
92 _ R 기초및통계분석 8. t- 분포 (1) t- 분포의모양 표준정규분포와 -분포에의해 t-분포가도출된다. 이고 이며서로독립이면, 다음의확률변수 T는자유도가 인 t-분포에따른다. 한편, 다음의확률변수 t 는자유도가 n-1 인 t- 분포에따른다. 이확률변수 t는자유도가무한히커지면표준정규분포에접근하는데표준정규분포와자유도가 4인 t-분포를비교한 < 그림 4-4> 를보면 t-분포가표준정규분포보다꼬리부분의확률이조금더큰것을알수있다. < 그림 4-4> 표준정규분포와자유도가 4 인 t- 분포의비교
제 4 장이론적확률분포 _ 93 b1-ch4-14.r을실행하면자유도가 5인 t-분포를그려주고있는데좌우대칭의분포로정규분포와유사함을확인할수있다. set.seed(12345) b1-ch4-14.r 의실행결과 n<-10000; z<-rnorm(n,0,1) z1<-rnorm(n,0,1) z2<-rnorm(n,0,1) z3<-rnorm(n,0,1) z4<-rnorm(n,0,1) z5<-rnorm(n,0,1) chi5<-z1^2+z2^2+z3^2+z4^2+z5^2 sqchi5<-sqrt(chi5/5) t5<-z/sqchi5 hist(t5, breaks=100) Histogram of t5 Frequency 0 200 400 600 800-10 -5 0 5 t5
94 _ R 기초및통계분석 b1-ch4-15.r을실행하면각각자유도가 5, 10, 15, 30인 t-분포를그려주고있는데자유도에따라 t-분포의모양이변하는것을확인할수있다. > n<-10000; b1-ch4-15.r 의실행결과 > df_list<-c(5,10,15,30) > par(mfrow=c(2,2)) > for (i in 1:length(df_list)) { + hist(rt(n, df=df_list[i], ncp=0), breaks=100, xlab="t", main=paste("df=", df_list[i])) df= 5 df= 10 Frequency 0 400 800 Frequency 0 200 400-5 0 5 10 t -6-4 -2 0 2 4 6 t df= 15 df= 30 Frequency 0 200 400 Frequency 0 200 400-4 -2 0 2 4 t -4-2 0 2 4 t t-분포는자유도가모수이므로자유도의크기에따라분포의형태가달라진다. b1-ch4-16.r을실행하면각각자유도가 1, 4, 9, 29인 t-분포를그려주고있는데자유도에따라 t-분포의모양이변하는것을확인할수있으며, 자유도가클수록정규분포와근사한분포형태를갖는다.
제 4 장이론적확률분포 _ 95 > n_list<-c(2,5,10,30) # 표본수 (n) b1-ch4-16.r 의실행결과 > df_list<-n_list-1 # 자유도 > curve(dt(x, 1, ncp=0), add=t, col="blue", xlim=c(-4, 4), ylim=c(0, 0.5), xlab="t", ylab="f(t)") > curve(dt(x, 4, ncp=0), add=t, col="red", xlim=c(-4, 4), ylim=c(0, 0.5), xlab="t", ylab="f(t)") > curve(dt(x, 9, ncp=0), add=t, col="green", xlim=c(-4, 4), ylim=c(0, 0.5), xlab="t", ylab="f(t)") > curve(dt(x, 29, ncp=0), add=t, col="black", xlim=c(-4, 4), ylim=c(0, 0.5), xlab="t", ylab="f(t)") > par(mfrow=c(2,2)) > for (i in 1:length(df_list)) { + + curve(dt(x, df_list[i], ncp=0), xlim=c(-4, 4), ylim=c(0, 0.5), xlab="t", ylab="f(t)", main=paste("df=", df... [TRUNCATED]
96 _ R 기초및통계분석 df= 1 df= 4 f(t) 0.0 0.2 0.4 f(t) 0.0 0.2 0.4-4 -2 0 2 4 t -4-2 0 2 4 t df= 9 df= 29 f(t) 0.0 0.2 0.4 f(t) 0.0 0.2 0.4-4 -2 0 2 4 t -4-2 0 2 4 t (2) t- 분포의확률분포표 t-분포는자유도 n-1에따라분포의형태가다르므로각각의자유도및확률에따른 t- 분포의값이다음과같이주어져있다. 자유도가 5일때 인데이는 를의미한다. v p 0.1 0.05 0.025 0.01 0.005 1 3.078 6.314 12.706 31.821 63.657 2 1.886 2.920 4.303 6.965 9.923 3 0.1638 2.353 3.182 4.541 5.841 4 1.533 2.132 2.776 3.747 4.604 5 1.476 2.015 2.571 3.365 4.032 6 1.440 1.943 2.447 3.143 3.707 7 1.415 1.895 2.365 2.998 3.499 8 1.397 1.860 2.306 2.896 3.355 9 1.383 1.833 2.262 2.821 3.250
제 4 장이론적확률분포 _ 97 b1-ch4-17.r 을실행하면위와동일한 t- 분포표를만들수있음을확인할수있다. > t11<-rep(na,9) b1-ch4-17.r 의실행결과 > t12<-rep(na,9) > t13<-rep(na,9) > t14<-rep(na,9) > t15<-rep(na,9) > for(i in 1:9) { + t11[i]<-qt(0.9, i) + } > for(i in 1:9) { + t12[i]<-qt(0.95, i) + } > for(i in 1:9) { + t13[i]<-qt(0.975,i) + } > for(i in 1:9) { + t14[i]<-qt(0.99, i) + } > for(i in 1:9) { + t15[i]<-qt(0.995, i) + } > round((poi<-cbind(t11,t12,t13,t14,t15)), digits=3) t11 t12 t13 t14 t15 [1,] 3.078 6.314 12.706 31.821 63.657
98 _ R 기초및통계분석 [2,] 1.886 2.920 4.303 6.965 9.925 [3,] 1.638 2.353 3.182 4.541 5.841 [4,] 1.533 2.132 2.776 3.747 4.604 [5,] 1.476 2.015 2.571 3.365 4.032 [6,] 1.440 1.943 2.447 3.143 3.707 [7,] 1.415 1.895 2.365 2.998 3.499 [8,] 1.397 1.860 2.306 2.896 3.355 [9,] 1.383 1.833 2.262 2.821 3.250 9. F- 분포 (1) F- 분포의모양 두개의독립적인 - 분포에의해 F- 분포가도출된다. 이고 이며서로독립이면, 다음의확률변수 F 는분자및분모의자유도가각 각 인 F- 분포에따른다. 한편, 다음의확률변수 F 는분자및분모의자유도가각각 인 F- 분 포에따른다.
제 4 장이론적확률분포 _ 99 이확률변수 F는자유도가분자및분모의자유도가같아지면서커질수록좌우대칭분포와비슷하게된다. b1-ch4-18.r을실행하면분자및분모의자유도가각각 5인 F-분포를그려주고있는데좌우비대칭의분포임을확인할수있다. > set.seed(12345) b1-ch4-18.r 의실행결과 > n<-10000; > z1<-rnorm(n,0,1) > z2<-rnorm(n,0,1) > z3<-rnorm(n,0,1) > z4<-rnorm(n,0,1) > z5<-rnorm(n,0,1) > z6<-rnorm(n,0,1) > z7<-rnorm(n,0,1) > z8<-rnorm(n,0,1) > z9<-rnorm(n,0,1) > z10<-rnorm(n,0,1) > chi15<-z1^2+z2^2+z3^2+z4^2+z5^2 > chi25<-z6^2+z7^2+z8^2+z9^2+z10^2 > f55<-(chi15/5)/(chi25/5) > hist(f55, breaks=100)
100 _ R 기초및통계분석 Histogram of f55 Frequency 0 1000 2000 3000 4000 5000 0 20 40 60 80 f55 b1-ch4-19.r을실행하면분자및분모의자유도가각각 (5,10), (9,10), (15,20), (38, 40) 인 F-분포를그려주고있는데자유도에따라 F-분포의모양이변하는것을확인할수있다. > set.seed(12345) b1-ch4-19.r 의실행결과 > n<-10000; > df1_list<-c(5,9,15,38) > df2_list<-c(10,10,20,40) > par(mfrow=c(2,2)) > for (i in 1:length(df1_list)) { + hist(rf(n, df1=df1_list[i], df2=df2_list[i], ncp=0), breaks=100, xlab="f", main=paste("df1=", df1_list[i], "df2=..."... [TRUNCATED]
제 4 장이론적확률분포 _ 101 df1= 5 df2= 10 df1= 9 df2= 10 Frequency 0 400 800 1400 Frequency 0 500 1000 0 5 10 15 f 0 5 10 15 f df1= 15 df2= 20 df1= 38 df2= 40 Frequency 0 200 600 Frequency 0 200 400 600 0 2 4 6 8 f 0.5 1.0 1.5 2.0 2.5 3.0 3.5 f b1-ch4-20.r을실행하면자유도가각각 (3,15), (5,15), (10,15), (15,15) 인 F- 분포를그려주고있는데분자및분모의자유도가같아질수록좌우대칭에가까운분포로변함을확인할수있다. b1-ch4-20.r 의실행결과 > curve(df(x, 3, 15, ncp=0), add=t, col="blue", xlim=c(0,5), ylim=c(0,1), xlab="f", ylab="f(f)") > curve(df(x, 5, 15, ncp=0), add=t, col="red", xlim=c(0,5), ylim=c(0,1), xlab="f", ylab="f(f)") > curve(df(x, 10, 15, ncp=0), add=t, col="green", xlim=c(0,5), ylim=c(0,1), xlab="f", ylab="f(f)") > curve(df(x, 15, 15, ncp=0), add=t, col="black", xlim=c(0,5), ylim=c(0,1), xlab="f", ylab="f(f)") > df1_list<-c(3,5,10,15)
102 _ R 기초및통계분석 > df2_list<-c(15,15,15,15) > par(mfrow=c(2,2)) > for (i in 1:length(df1_list)) { + curve(df(x, df1=df1_list[i], df2=df2_list[i], ncp=0), xlim=c(0,5), ylim=c(0,1), xlab="f", ylab="f(f)", main=past... [TRUNCATED] df1= 3 df2= 15 df1= 5 df2= 15 f(f) 0.0 0.4 0.8 f(f) 0.0 0.4 0.8 0 1 2 3 4 5 f 0 1 2 3 4 5 f df1= 10 df2= 15 df1= 15 df2= 15 f(f) 0.0 0.4 0.8 f(f) 0.0 0.4 0.8 0 1 2 3 4 5 f 0 1 2 3 4 5 f
제 4 장이론적확률분포 _ 103 (2) F- 분포의확률분포표 F- 분포는분자의자유도 ( ) 및분모의자유도 ( ) 에따라분포의형태가다르므 로각각의자유도에따른 에대한 F값이다음과같이주어져있다분자의자유도가 7이고분모의자유도가 9인경우 이다. v 1 v 2 1 2 3 4 5 6 7 8 9 10 1 161.45 199.50 215.71 224.58 230.16 233.99 236.77 238.88 240.54 241.88 2 18.51 19.00 19.16 19.25 19.30 19.33 19.35 19.37 19.38 19.40 3 10.13 9.55 9.28 9.12 9.01 8.94 8.89 8.85 8.81 8.76 4 7.71 6.94 6.59 6.39 6.26 6.16 6.09 6.04 6.00 5.96 5 6.61 5.79 5.41 5.19 5.05 4.95 4.48 4.82 4.77 4.74 6 5.99 4.74 7.35 4.12 3.94 3.87 3.79 3.73 3.68 3.64 7 5.59 4.74 4.35 4.12 3.97 3.87 3.79 3.73 3.68 3.64 8 5.32 4346 4.07 3.84 3.69 3.58 3.50 3.44 3.39 3.35 9 5.12 4.26 3.86 3.63 3.48 3.37 3.29 3.23 3.18 3.14 10 4.96 4.10 3.71 3.48 3.33 3.22 3.14 3.07 3.02 2.98 b1-ch4-21.r 을실행하면위와동일한 F- 분포표를만들수있음을확인할수있다. > f11<-rep(na,10) b1-ch4-21.r 의실행결과 > f12<-rep(na,10) > f13<-rep(na,10) > f14<-rep(na,10) > f15<-rep(na,10) > f16<-rep(na,10)
104 _ R 기초및통계분석 > f17<-rep(na,10) > f18<-rep(na,10) > f19<-rep(na,10) > f110<-rep(na,10) > for(i in 1:10) { + f11[i]<-qf(0.95, 1, i) + } > for(i in 1:10) { + f12[i]<-qf(0.95, 2, i) + } > for(i in 1:10) { + f13[i]<-qf(0.95, 3, i) + } > for(i in 1:10) { + f14[i]<-qf(0.95, 4, i) + } > for(i in 1:10) { + f15[i]<-qf(0.95, 5, i) + } > for(i in 1:10) { + f16[i]<-qf(0.95, 6, i) + } > for(i in 1:10) { + f17[i]<-qf(0.95, 7, i) + }
제 4 장이론적확률분포 _ 105 > for(i in 1:10) { + f18[i]<-qf(0.95, 8, i) + } > for(i in 1:10) { + f19[i]<-qf(0.95, 9, i) + } > for(i in 1:10) { + f110[i]<-qf(0.95, 10, i) + } > round((poi<-cbind(f11,f12,f13,f14,f15,f16,f17,f18,f19,f110)), digits=2) f11 f12 f13 f14 f15 f16 f17 f18 f19 f110 [1,] 161.45 199.50 215.71 224.58 230.16 233.99 236.77 238.88 240.54 241.88 [2,] 18.51 19.00 19.16 19.25 19.30 19.33 19.35 19.37 19.38 19.40 [3,] 10.13 9.55 9.28 9.12 9.01 8.94 8.89 8.85 8.81 8.79 [4,] 7.71 6.94 6.59 6.39 6.26 6.16 6.09 6.04 6.00 5.96 [5,] 6.61 5.79 5.41 5.19 5.05 4.95 4.88 4.82 4.77 4.74 [6,] 5.99 5.14 4.76 4.53 4.39 4.28 4.21 4.15 4.10 4.06 [7,] 5.59 4.74 4.35 4.12 3.97 3.87 3.79 3.73 3.68 3.64 [8,] 5.32 4.46 4.07 3.84 3.69 3.58 3.50 3.44 3.39 3.35 [9,] 5.12 4.26 3.86 3.63 3.48 3.37 3.29 3.23 3.18 3.14 [10,] 4.96 4.10 3.71 3.48 3.33 3.22 3.14 3.07 3.02 2.98
제 5 장 표본분포 1. 표본평균의표본분포 2. 중심극한정리 3. 표본분산의표본분포
108 _ R 기초및통계분석 제 5 장표본분포 1. 표본평균의표본분포 모집단에서일정한크기의모든가능한표본을추출하였을때그모든표본으로부터계산된통계량즉, 표본평균및표본분산의확률분포를표본분포 (sampling distribution) 이라고한다. 예를들어, J제약회사는많은종류의신약을개발하였다. 이제약회사가신약을개발하기위해서 1,2,3 혹은 4년의시간이걸렸으며각각의발생확률은동등하다고가정하자. 이때신약의평균개발기간인모집단의평균 및분산 로계산된다. < 그림 5-1> 모집단으로부터표본크기 (n) 가 2 인임의표본추출 표본크기 2의모든가능한표본과표본평균은 < 표 5-1> 과같고, 표본평균의표본분포는 < 표 5-2> 와같다.
제 5 장표본분포 _ 109 < 표 5-1> 표본크기 2인표본및표본평균 표본 표본평균 ( ) 표본 표본평균 ( ) (1,1) 1.0 (3,1) 2.0 (1,2) 1.5 (3,2) 2.5 (1,3) 2.5 (3,3) 3.0 (1,4) 2.5 (3,4) 3.5 (2,1) 1.5 (4,1) 2.5 (2,2) 2.0 (4,2) 3.0 (2,3) 2.5 (4,3) 3.5 (2,4) 3.0 (4,4) 4.0 < 표 5-2> 표본평균의표본분포 1 1.5 2.0 2.5 3.0 3.5 4.0 P( ) 1/16 2/16 3/16 4/16 3/16 2/16 1/16 표본평균의평균을계산해보면 2.5로써모평균과 2.5로같지만표본평균의분산은 0.625로써모분산과같지않으며, 표본평균의분산은모분산의 1/2이된다. b1-ch5-1.r을실행하면표본평균의평균은 2.502412, 분산은 0.6193981로써모집단의이론적인평균과표준편차에근접함을알수있다. b1-ch5-1.r 의실행결과 > sampling.dist.1<-null > for(sample.count in 1:10000){ + set.seed(sample.count) + sample.mean.1<-mean(rnorm(2,2.5,1.118)) + sampling.dist.1<-c(sampling.dist.1, sample.mean.1) + } > mean(sampling.dist.1) [1] 2.502412 > var(sampling.dist.1) [1] 0.6193981 > > hist(sampling.dist.1, freq=f, col="grey", xlab="", xlim=c(-1, 6),
110 _ R 기초및통계분석 breaks=100) > par(new=t) > plot(density(sampling.dist.1), axes=f, main="", xlim=c(-1, 6), lwd=2, col="blue") Histogram of sampling.dist.1 Density 0.0 0.1 0.2 0.3 0.4 0.5 0.6-1 0 1 2 3 4 5 6 N = 10000 Bandwidth = 0.1123 표본크기에따른표본평균의표본분포를살펴보면 < 그림 5-2> 에나타나있듯이표본평균의평균은표본크기에관계없이모평균과동일하고, 표본평균의분산은모분산을표본크기로나눈값과같으므로표본크기가커짐에따라표본평균의분산은작아진다. < 그림 5-2> 표본크기 (n) 에따른표본평균의표본분포
제 5 장표본분포 _ 111 b1-ch5-2.r을실행하면 < 그림 5-1> 의모집단에서표본크기를다르게할경우표본평균의분포를보여주고있는데표본평균의평균은모평균과동일하지만, 표본평균의분산은모분산을표본크기로나눈값이되는것을확인할수있다. b1-ch5-2.r 의실행결과 > sampling.dist.1<-null > for(sample.count in 1:10000){ + set.seed(sample.count) + sample.mean.1<-mean(rnorm(2,2.5,1.118)) + sampling.dist.1<-c(sampling.dist.1, sample.... [TRUNCATED] > mean(sampling.dist.1) [1] 2.502412 > var(sampling.dist.1) [1] 0.6193981 > table(round(sampling.dist.1)) -1 0 1 2 3 4 5 6 1 53 968 3913 4055 961 48 1 > sampling.dist.2<-null > for(sample.count in 1:10000){ + set.seed(sample.count) + sample.mean.2<-mean(rnorm(5,2.5,1.118)) + sampling.dist.2<-c(sampling.dist.2, sample.... [TRUNCATED] > mean(sampling.dist.2) [1] 2.498498 > var(sampling.dist.2) [1] 0.2513623
112 _ R 기초및통계분석 > table(round(sampling.dist.2)) 1 2 3 4 225 4805 4720 250 > sampling.dist.3<-null > for(sample.count in 1:10000){ + set.seed(sample.count) + sample.mean.3<-mean(rnorm(10,2.5,1.118)) + sampling.dist.3<-c(sampling.dist.3, sample... [TRUNCATED] > mean(sampling.dist.3) [1] 2.500606 > var(sampling.dist.3) [1] 0.1256997 > table(round(sampling.dist.3)) 1 2 3 4 10 5008 4955 27 > sampling.dist.4<-null > for(sample.count in 1:10000){ + set.seed(sample.count) + sample.mean.4<-mean(rnorm(30,2.5,1.118)) + sampling.dist.4<-c(sampling.dist.4, sample... [TRUNCATED] > mean(sampling.dist.4) [1] 2.502484 > var(sampling.dist.4) [1] 0.0420068 > table(round(sampling.dist.4))
제 5 장표본분포 _ 113 2 3 4992 5008 > par(mfrow=c(2,2)) > hist(sampling.dist.1, freq=f, col="grey", xlab="", xlim=c(-1, 6), breaks=100) > par(new=t) > plot(density(sampling.dist.1), axes=f, main="", xlim=c(-1, 6), lwd=2, col="blue") > hist(sampling.dist.2, freq=f, col="grey", xlab="", xlim=c(-1, 6), breaks=100) > par(new=t) > plot(density(sampling.dist.2), axes=f, main="", xlim=c(-1, 6), lwd=2, col="blue") > hist(sampling.dist.3, freq=f, col="grey", xlab="", xlim=c(-1, 6), breaks=100) > par(new=t) > plot(density(sampling.dist.3), axes=f, main="", xlim=c(-1, 6), lwd=2, col="blue") > hist(sampling.dist.4, freq=f, col="grey", xlab="", xlim=c(-1, 6), breaks=100) > par(new=t) > plot(density(sampling.dist.4), axes=f, main="", xlim=c(-1, 6), lwd=2, col="blue")
114 _ R 기초및통계분석 Histogram of sampling.dist.1 Histogram of sampling.dist.2 Density 0.0 0.3 0.6 Density 0.0 0.4 0.8-1 0 1 2 3 4 5 6 N = 10000 Bandwidth = 0.1123-1 0 1 2 3 4 5 6 N = 10000 Bandwidth = 0.07151 Histogram of sampling.dist.3 Histogram of sampling.dist.4 Density 0.0 0.6 1.2 Density 0.0 1.0 2.0-1 0 1 2 3 4 5 6 N = 10000 Bandwidth = 0.05057-1 0 1 2 3 4 5 6 N = 10000 Bandwidth = 0.02879 2. 중심극한정리 평균이 이고, 분산이 인확률분포로부터표본크기가 n 인확률표본 (,,..., ) 을추출할때, 표본평균 는 n이클수록평균이 이고, 분산이 인정규분포와근사한분포를갖는다. 즉, 의분포는 과같이나타낼수있는데이를중심극한정리 (central limit theorem) 라고한다. 관찰된자료의모집단이정규분포에따를경우관찰자료역시정규분포에따르고, 관찰된자료의모집단이실제로정규분포가아니면관찰자료역시정규분포에따르지않는다. 그러나관찰된자료의모집단이실제로정규분포가아닌경우에도중심극한정리에의해표준정규분포를이용한추정량의근사확률을구할수있다.
제 5 장표본분포 _ 115 ( 실험 1) 확률변수 X가균등분포 U(0,1) 을따른다고할때 X U(0,1) 이며, X는 0과 1사이에서균등한분포를갖는연속형확률변수이다. 이러한확률분포로부터표본크기 n 이 11인확률표본을 1,000개추출하는실험을해보자. 1,000 개표본으로부터구한표본평균 을이용하여히스토그램을 그려보면균등분포로부터구한표본평균의분포가정규분포와근사한분포를갖는다는것을알수있다. X U(0,1) 에서 X의평균은 1/2, 분산은 1/12이므로 n=11인경우표본평균 의평균은 1/2, 분산은 1/(11x12) 이됨을다음과같이확인할수있다. 즉, 표본평균 는근사적으로 을따르는데 1,000개표본의표본평균 과분산은각각 0.5019 및 0.0078로서모집단의이론적인평균과표준편차에근접함을알수있다 > (mean(sample_mean)) [1] 0.5019778 > (var(sample_mean)) [1] 0.007837079 b1-ch5-3.r 을실행하면위의 ( 실험 1) 을확인할수있다. > set.seed(23456789) b1-ch5-3.r 의실행결과 > sample_size <- 11 > min <- 0 > max <- 1 > n_rep <- 1000
116 _ R 기초및통계분석 > sample_mean <- rep(na, n_rep) > sample_var <- rep(na, n_rep) > #graphics.off() > #par(mfrow=c(1,2)) > > for (i in 1:n_rep) { + my_sample <- runif(sample_size,min,max) + sample_mean[i] <- mean(my_samp... [TRUNCATED] > (mean(sample_mean)) [1] 0.5019778 > (var(sample_mean)) [1] 0.007837079 > hist(sample_mean, breaks=40, prob=t, main=paste("samples of size 11"), col="black") > par(new=t) > plot(density(sample_mean), xlab="", axes=f, main="", col="blue")
제 5 장표본분포 _ 117 ( 실험 2) 확률변수 X가평균이 10, 표준편차가 2인정규분포를따른다고할때이러한확률분포로부터표본크기가각각 5, 10, 20, 30인확률표본을 1,000개추출하는실험을해보자. 표본평균 는표본크기에따라 1,000개표본의표본평균과분산은각각다음과같은데모집단의이론적인평균과분산에근접함을알수있다. 구분 n=5 n=10 n=20 n=30 표본평균의평균 10.00494 10.00259 9.998591 9.993856 표본평균의분산 0.7818611 0.3992823 0.2039642 0.1347668 b1-ch5-4.r 을실행하면위의 ( 실험 2) 를확인할수있다 b1-ch5-4.r 의실행결과 > set.seed(123456) > curve(dnorm(x,10,2), xlim = c(4, 16), ylim = c(0.0, 0.22)) > par(mfrow=c(2,2)) > ybar5<-numeric(10000) > for(j in 1:10000) { + sample<-rnorm(5,10,2) + ybar5[j] <-mean(sample) + } > mean(ybar5) [1] 10.00494 > var(ybar5) [1] 0.7818611 > plot(density(ybar5), xlim = c(7, 13), ylim = c(0.0, 0.5))
118 _ R 기초및통계분석 > curve(dnorm(x,10,sqrt(0.78186)), add=t, lty=2) > ybar10<-numeric(10000) > for(k in 1:10000) { + sample<-rnorm(10,10,2) + ybar10[k] <-mean(sample) + } > mean(ybar10) [1] 10.00259 > var(ybar10) [1] 0.3992823 > plot(density(ybar10),xlim = c(7.5, 12.5), ylim = c(0.0, 0.8)) > curve(dnorm(x,10,sqrt(0.39928)), add=t, lty=2) > ybar20<-numeric(10000) > for(m in 1:10000) {T + sample<-rnorm(20,10,2) + ybar20[m] <-mean(sample) + } > mean(ybar20) [1] 9.998591 > var(ybar20) [1] 0.2039642 > plot(density(ybar20),xlim = c(8.5, 11.5), ylim = c(0.0, 1.0)) > curve(dnorm(x,10,sqrt(0.20396)), add=t, lty=2)
제 5 장표본분포 _ 119 > ybar30<-numeric(10000) > for(n in 1:10000) { + sample<-rnorm(30,10,2) + ybar30[n] <-mean(sample) + } > mean(ybar30) [1] 9.993856 > var(ybar30) [1] 0.1347668 > plot(density(ybar30),xlim = c(8.5, 11.5), ylim = c(0.0, 1.2)) > curve(dnorm(x,10,sqrt(0.13477)), add=t, lty=2) dnorm(x, 10, 2) 0.00 0.05 0.10 0.15 0.20 4 6 8 10 12 14 16 x
120 _ R 기초및통계분석 ( 실험 3) 확률변수 X가자유도가 1인 -분포를따른다고할때 ( 따라서평균은 1, 분산은 2가됨 ) 이러한확률분포로부터표본크기가각각 2, 10, 20, 30인확률표본을 1,000 개추출하는실험을해보자. 표본크기에따라 1,000개표본의표본평균의평균과분산은각각다음과같은데모집단의이론적인평균과분산에근접함을알수있다. 구분 n=2 n=10 n=20 n=30 표본평균의평균 0.9873457 1.002666 0.9988942 0.9961374 표본평균의분산 0.9841301 0.2016694 0.1021074 0.06725091 b1-ch5-5.r 을실행하면위의 ( 실험 3) 을확인할수있다
제 5 장표본분포 _ 121 b1-ch5-5.r 의실행결과 > set.seed(123456) > curve(dchisq(x,1)) > par(mfrow=c(2,2)) > ybar2<-numeric(10000) > for(j in 1:10000) { + sample<-rchisq(2,1) + ybar2[j] <-mean(sample) + } > mean(ybar2) [1] 0.9873457 > var(ybar2) [1] 0.9841301 > plot(density(ybar2), xlim = c(0, 10), ylim = c(0.0, 0.8)) > curve(dnorm(x,1,sqrt(0.98413)), add=t, lty=2) > ybar10<-numeric(10000) > for(k in 1:10000) { + sample<-rchisq(10,1) + ybar10[k] <-mean(sample) + } > mean(ybar10) [1] 1.002666 > var(ybar10) [1] 0.2016694
122 _ R 기초및통계분석 > plot(density(ybar10),xlim = c(0, 4), ylim = c(0.0, 1)) > curve(dnorm(x,1,sqrt(0.20167)), add=t, lty=2) > ybar20<-numeric(10000) > for(n in 1:10000) { + sample<-rchisq(20,1) + ybar20[n] <-mean(sample) + } > mean(ybar20) [1] 0.9988942 > var(ybar20) [1] 0.1021074 > plot(density(ybar20),xlim = c(0, 3), ylim = c(0.0, 1.5)) > curve(dnorm(x,1,sqrt(0.10241)), add=t, lty=2) > ybar30<-numeric(10000) > for(m in 1:10000) { + sample<-rchisq(30,1) + ybar30[m] <-mean(sample) + } > mean(ybar30) [1] 0.9961374 > var(ybar30) [1] 0.06725091 > plot(density(ybar30),xlim = c(0.3, 1.7), ylim = c(0.0, 2.0)) > curve(dnorm(x,1,sqrt(0.06725)), add=t, lty=2)
제 5 장표본분포 _ 123 dchisq(x, 1) 1 2 3 4 0.0 0.2 0.4 0.6 0.8 1.0 x
124 _ R 기초및통계분석 ( 실험 4) 확률변수 X가균등분포 U(0,1) 을따른다고할때즉, X U(0,1) 일때 ( 따라서평균은 0.5, 분산은 0.083333이됨 ) 이러한확률분포로부터표본크기가각각 2, 10, 20, 30인확률표본을 1,000개추출하는실험을해보자. 표본크기에따라 1,000개표본의표본평균의평균과분산은각각다음과같은데모집단의이론적인평균과분산에근접함을알수있다. 구분 n=2 n=10 n=20 n=30 표본평균의평균 0.5013918 0.4987733 0.5003994 0.4996023 표본평균의분산 0.04192942 0.008292283 0.004107226 0.002834952 b1-ch5-6.r 을실행하면위의 ( 실험 4) 를확인할수있다 b1-ch5-6.r 의실행결과 > set.seed(123456) > curve(dunif(x,min=0, max=1)) > par(mfrow=c(2,2)) > ybar2<-numeric(10000) > for(j in 1:10000) { + sample<-runif(2,min=0, max=1) + ybar2[j] <-mean(sample) + } > mean(ybar2) [1] 0.5013918 > var(ybar2) [1] 0.04192942 > plot(density(ybar2), xlim = c(0, 1), ylim = c(0,3.5))
제 5 장표본분포 _ 125 > curve(dnorm(x,0.5,sqrt(0.04193)), add=t, lty=2) > ybar10<-numeric(10000) > for(k in 1:10000) { + sample<-runif(10,min=0, max=1) + ybar10[k] <-mean(sample) + } > mean(ybar10) [1] 0.4987733 > var(ybar10) [1] 0.008292283 > plot(density(ybar10),xlim = c(0, 1), ylim = c(0,4.5)) > curve(dnorm(x,0.5,sqrt(0.00829)), add=t, lty=2) > ybar20<-numeric(10000) > for(m in 1:10000) { + sample<-runif(20,min=0, max=1) + ybar20[m] <-mean(sample) + } > mean(ybar20) [1] 0.5003994 > var(ybar20) [1] 0.004107226 > plot(density(ybar20),xlim = c(0, 1), ylim = c(0, 6.5)) > curve(dnorm(x,0.5,sqrt(0.00411)), add=t, lty=2)
126 _ R 기초및통계분석 > ybar30<-numeric(10000) > for(n in 1:10000) { + sample<-runif(30,min=0, max=1) + ybar30[n] <-mean(sample) + } > mean(ybar30) [1] 0.4996023 > var(ybar30) [1] 0.002834952 > plot(density(ybar30),xlim = c(0, 1), ylim = c(0, 7.7)) > curve(dnorm(x,0.5,sqrt(0.00283)), add=t, lty=2) dunif(x, min = 0, max = 1) 0.6 0.8 1.0 1.2 1.4 0.0 0.2 0.4 0.6 0.8 1.0 x
제 5 장표본분포 _ 127 3. 표본분산의표본분포 앞의예와동일하게 J제약회사는많은종류의신약을개발하였다. 이제약회사가신약을개발하기위해서 1,2,3 혹은 4년의시간이걸렸으며신약의평균개발기간인 모집단의평균 및분산 로계산된다. < 그림 5-3> 모집단으로부터표본크기 (n) 가 2 인임의표본추출
128 _ R 기초및통계분석 표본크기 2의모든가능한표본과표본평균및표본분산은 < 표 5-3> 과같다. 표본평균의경우중심극한정리에의해표본크기가증가함에따라정규분포를따르지만, 표본분산의경우정규분포를따르지않는다. < 표 5-3> 표본크기 2인표본, 표본평균및표본분산 표본 표본평균 ( ) 표본분산 ( ) 표본 표본평균 ( ) 표본분산 ( ) (1,1) 1.0 0.0 (3,1) 2.0 2.0 (1,2) 1.5 0.5 (3,2) 2.5 0.5 (1,3) 2.5 2.0 (3,3) 3.0 0.0 (1,4) 2.5 4.4 (3,4) 3.5 0.5 (2,1) 1.5 0.5 (4,1) 2.5 4.5 (2,2) 2.0 0.0 (4,2) 3.0 2.0 (2,3) 2.5 0.5 (4,2) 3.5 0.5 (2,4) 3.0 2.0 (4,4) 4.0 0.0 모집단이정규분포에따르더라도표본분산의표본분포는다음히스토그램과같은분포를이루게된다. 즉, 정규분포로부터구한표본분산의분포는정규분포에따르지않는다. b1-ch5-7.r을실행하면표본분산의평균은 1.232382, 분산은 3.227298로써모집 단의이론적인평균인 와분산인 에근접함을알수있다. > sampling.dist.1<-null b1-ch5-7.r 의실행결과 > for(sample.count in 1:10000){ + set.seed(sample.count) + sample.var.1<-var(rnorm(2,2.5,1.118)) + sampling.dist.1<-c(sampling.dist.1, sample.va... [TRUNCATED] > mean(sampling.dist.1) [1] 1.232382
제 5 장표본분포 _ 129 > var(sampling.dist.1) [1] 3.227298 > hist(sampling.dist.1, freq=f, col="grey", xlab="", xlim=c(-1, 6), breaks=100) > par(new=t) > plot(density(sampling.dist.1), axes=f, main="", xlim=c(-1, 6), lwd=2, col="blue") Histogram of sampling.dist.1 Density 0.0 0.5 1.0 1.5-1 0 1 2 3 4 5 6 N = 10000 Bandwidth = 0.1587 평균이 10 이고, 표준편차가 2 인정규분포에따르는모집단에서 1,000 개표본으로 부터구한표본분산 을이용하여히스토그램을그린 b1-ch5-8.r 을 실행해보면정규분포에따르지않는다는것을확인할수있다.
130 _ R 기초및통계분석 b1-ch5-8.r 의실행결과 > sample_size <- 11 > n_rep <- 1000 > sample_mean <- rep(na, n_rep) > sample_var <- rep(na, n_rep) > #graphics.off() > #par(mfrow=c(1,2)) > > for (i in 1:n_rep) { + my_sample <- rnorm(sample_size,10,2) + sample_mean[i] <- mean(my_sample)... [TRUNCATED] > (mean(sample_mean)) [1] 10.01389 > (var(sample_mean)) [1] 0.3766244 > hist(sample_var, breaks=40, prob=t, main=paste( "samples of size 11" ),col="black") > par(new=t) > plot(density(sample_var), xlab="", axes=f, main="", col="blue")
제 5 장표본분포 _ 131 samples of size 11 Density 0.00 0.05 0.10 0.15 0.20 0.25 0 2 4 6 8 10 12 14 sample_var b1-ch5-9.r 을실행하면표본크기를다르게할경우표본분산의분포를보여주고 있는데모집단의이론적인평균인 과분산인 에근접함을알수있다. > set.seed(123456) b1-ch5-9.r 의실행결과 > par(mfrow=c(2,2)) > vbar10<-numeric(10000) > for(j in 1:10000) { + sample10<-rnorm(10,10,2) + vbar10[j] <-var(sample10) + } > (mean(vbar10)) [1] 4.020385 > (var(vbar10))
132 _ R 기초및통계분석 [1] 3.60356 > hist(vbar10, freq=f, xlab="", breaks=100) > par(new=t) > plot(density(vbar10), axes=f, main="", col="blue") > vbar20<-numeric(10000) > for(j in 1:10000) { + sample20<-rnorm(20,10,2) + vbar20[j] <-var(sample20) + } > (mean(vbar20)) [1] 4.002698 > (var(vbar20)) [1] 1.676938 > hist(vbar20, freq=f, xlab="", breaks=100) > par(new=t) > plot(density(vbar20), axes=f, main="", col="blue") > vbar30<-numeric(10000) > for(j in 1:10000) { + sample30<-rnorm(30,10,2) + vbar30[j] <-var(sample30) + } > (mean(vbar30)) [1] 3.993987
제 5 장표본분포 _ 133 > (var(vbar30)) [1] 1.087883 > hist(vbar30, freq=f, xlab="", breaks=100) > par(new=t) > plot(density(vbar30), axes=f, main="", col="blue") > vbar100<-numeric(10000) > for(j in 1:10000) { + sample100<-rnorm(100,10,2) + vbar100[j] <-var(sample100) + } > (mean(vbar100)) [1] 3.993146 > (var(vbar100)) [1] 0.3217269 > hist(vbar100, freq=f, xlab="", breaks=100) > par(new=t) > plot(density(vbar100), axes=f, main="", col="blue")
134 _ R 기초및통계분석 Histogram of vbar10 Histogram of vbar20 Density 0.00 0.15 Density 0.00 0.15 0.30 0 5 10 15 2 4 6 8 10 N = 10000 Bandwidth = 0.2612 N = 10000 Bandwidth = 0.183 Histogram of vbar30 Histogram of vbar100 Density 0.0 0.2 0.4 Density 0.0 0.4 2 4 6 8 3 4 5 6 N = 10000 Bandwidth = 0.1478 N = 10000 Bandwidth = 0.08091
제 6 장 추정 1. 추정및신뢰구간 2. 모평균의구간추정 3. 모분산의구간추정
136 _ R 기초및통계분석 제 6 장추정 1. 추정및신뢰구간 (1) 추정 추정량 (estimator) 은표본정보를이용하여알지못하는모수의참값을추정하는방법이며, 알지못하는모수가 라면추정량은 으로표기한다. 추정치 (estimate) 는수치로계산된 의값이다. 추정량에는모수를하나의값으로추정하는점추정량과모수의값이빈번히포함되는구간을추정하는구간추정량이있다. 점추정 (point estimation) 은확률표본의정보를이용하여모수에대한특정값을지정하는방법인데, 표본평균은모평균의점추정치이고표본분산은모분산의점추정치가된다. 점추정량은언제나표본오차를수반하기때문에전적으로신뢰할수없다. 그러나구간추정 (interval estimation) 은이런점추정과달리모수가빈번히포함되는범위를제공하여연구의목적에따라원하는만큼의신뢰성을가지고모수를추정할수있다 (2) 신뢰구간 는알지못하는모수라고하자. 표본정보에근거하여일정한확률 ( ) 범위내에모수가포함될가능성이있는구간, 즉다음을만족하는확률변수 A와 B를구할수있다.
제 6 장추정 _ 137 만약확률변수 A와 B에대한측정값을 a와 b라고하면, 구간 a < < b 는 에대한 100( )% 신뢰구간이며 는신뢰수준그리고 는유의수준이라고한다. 2. 모평균구간추정 < 그림 6-1> 은모평균구간추정을위한의사결정트리를나타내고있다. 모집단의정규분포여부에관계없이, 모분산을알든모르든관계없이, 표본의크기가 30 이상의대표본이면 Z-통계량을이용하면된다. 표본의크기가 30 미만의소표본이면, 모집단이정규분포에따를경우에만모평균구간추정이가능하고, 이경우에모분산이알려져있으면 Z-통계량을이용하고모분산을모를경우 t-통계량을이용하면된다. < 그림 6-1> 모평균구간추정을위한의사결정트리 평균이 10이고표준편차가 2인모집단에서 100개의표본을추출하여모평균 ( ) 에대한신뢰구간을추정하는 b1-ch6-1.r을실행해보면모평균에대한 95% 신뢰구간
138 _ R 기초및통계분석 100개중 95개이상의신뢰구간이모평균 10을포함하고있는것을확인할수있다. 모평균 가확률변수가아니고고정된상수이므로 에대한 95% 신뢰구간의의미는크기가동일한 100개의서로다른표본에의해동일한공식으로 100개의신뢰구간을구했을때그중에서 95개의구간이모평균 를포함한다고볼수있다는것이다. > set.seed(12343) b1-ch6-1.r 의실행결과 > #par(mfrow=c(1,2)) > > CIlower<-numeric(100) > CIupper<-numeric(100) > pvalue1<-numeric(100) > for(j in 1:100) { + sample<-rnorm(80,10,2) + testres1<-t.test(sample,mu=10) + CIlower[j]<-testres1$conf.int[1] + CIupper[j]<-testres1$conf.i... [TRUNCATED] > testres1$conf.int[1] [1] 9.769371 > testres1$conf.int[2] [1] 10.60363 > testres1$p.value [1] 0.3762031 > reject1<-pvalue1<=0.05 > table(reject1)
제 6 장추정 _ 139 reject1 FALSE TRUE 97 3 > color<-rep(gray(.7),100) > color[reject1]<-"black" > plot(0, xlim=c(9,11), ylim=c(1,100), ylab="sample No.", xlab="", main="95% Confidence Interval") > abline(v=10, lty=2) > for(j in 1:100) { + lines(c(cilower[j], CIupper[j]), c(j,j), col=color[j], lwd=1) + } 95% Confidence Interval Sample No. 0 20 40 60 80 100 9.0 9.5 10.0 10.5 11.0
140 _ R 기초및통계분석 (1) Z- 통계량이용 모집단의정규분포여부에관계없이, 모분산을알든모르든관계없이, 표본의크기가 30 이상의대표본인경우또는모집단이정규분포에따르고, 모분산이알려져있으며, 표본의크기가 30 미만의소표본인경우 Z-통계량을이용하여모평균에대한신뢰구간을구할수있다. 평균 와분산 을가지는모집단이있으며, 는모르고 만안다고가정하자. 그리고이모집단으로부터 을표본추출하였으며 은알지만 는모르기때문에신뢰구간을통하여 를추정할수있으며 Z-통계량을이용하면된다. 신뢰수준이 가되는표준정규분포의신뢰구간은다음과같다. 여기서확률변수 이므로위의확률등식을다음과같이다시쓸수있다. 따라서 부터 까지의임의구간이모평균 를포 함할확률은 가되므로 에대한 100( )% 의신뢰구간은다음과같다. (, )
제 6 장추정 _ 141 ( 연습 1) 한기업에서현대인들이대기오염에시달린다는사실에착안하여언제나신선한산소를마실수있는휴대용산소제품을개발하기로하였다. 따라서이기업의연구팀은일반인들의산소소비량을측정하기위해임의로 35명을선정, 분당산소소비량을조사하여다음자료를얻었다. 이연구팀은일반인들의모집단은정규분포하며분산이 0.36이라는사실을알고있다고가정하자. 모집단평균의 95% 신뢰구간을구하라. b1-ch6-2.r을실행해보면모평균에대한 95% 신뢰구간은 (0.5176519, 0.9152052) 이다. 그러므로 는 95% 신뢰수준에서 (0.5176519,0.9152052) 에속하게된다. b1-ch6-2.r 의실행결과 > data1<-"http://kanggc.iptime.org/book/data/chap10-2.csv" > data1_dat<-as.matrix(read.csv(data1,header=t), ncol=1) > var1<-data1_dat[,1] > xbar=mean(var1) > z<-qnorm(0.025, 0, 1, lower.tail=f) > LCL1<-xbar-z*(0.6/sqrt(35)) > UCL1<-xbar+z*(0.6/sqrt(35)) > LCL1;UCL1 [1] 0.5176519 [1] 0.9152052
142 _ R 기초및통계분석 (2) t- 통계량이용 모집단이정규분포에따르고, 표본의크기가 30 미만의소표본이며, 모분산이알려져있지않은경우 t-통계량을이용하여모평균에대한신뢰구간을구할수있다. 모분산을모르고표본의크기가충분히크지않을때, 확률변수 는자 유도 n-1인 t-분포 (Student s t-distribution) 에따른다. 신뢰수준이 가되는 t-분포의신뢰구간은다음과같다. 여기서확률변수 이므로위의확률등식을다음과같이다시쓸수있다. 따라서 부터 까지의임의구간이모평 균 를포함할확률은 가되므로 에대한 100( )% 의신뢰구간은다음과같다. (, )
제 6 장추정 _ 143 ( 연습 2) 한피자체인점의지배인은피자배달시간이오래걸린다는소비자들의불평을확인해보기위해피자배달주문중임의로 20개를선정하여배달시간 ( 단위 : 분 ) 을측정하였더니다음과같았다. 모집단이정규분포를한다고가정하고모평균배달시간에대한 95% 신뢰구간을구하라. 14 10 9 10 11 16 15 8 6 18 17 4 12 15 14 15 9 8 7 16 b1-ch6-3.r을실행해보면모평균에대한 95% 신뢰구간은 (9.808949, 13.5910) 이다. 그러므로 는 95% 신뢰수준에서 (9.808949, 13.5910) 에속하게된다. b1-ch6-3.r 의실행결과 > library(foreign) > time<-read.dta(file="http://kanggc.iptime.org/book/data/chap10-2.dta") > n<-length(time$var1) > s<-sd(time$var1) > t19<-qt(0.025, df=19, lower.tail=f) > average<-mean(time$var1) > LCL<-average-t19*(s/sqrt(n)) > UCL<-average+t19*(s/sqrt(n)) > LCL;UCL [1] 9.808949 [1] 13.5910
144 _ R 기초및통계분석 3. 모분산구간추정 모평균이 10이고표준편차가 2인모집단에서 100개의표본을추출하여모분산 ( ) 에대한신뢰구간을추정하는 b1-ch6-4.r을실행해보면모분산에대한 95% 신뢰구간 100개중 95개이상의신뢰구간이모분산 4를포함하고있는것을확인할수있다. > set.seed(12345) b1-ch6-4.r 의실행결과 > CIlower<-numeric(100) > CIupper<-numeric(100) > pvalue1<-numeric(100) > for(j in 1:100) { + sample<-rnorm(100,10,2) + s2<-var(sample) + chi<-(99*s2)/4 + pvalue1[j]<-pchisq(chi, 0.95, df=99, lower.tail=f) + chi_... [TRUNCATED] > CIlower [1] 3.831738 3.153297 2.680453 2.905234 2.421398 3.657560 [7] 3.335122 3.025787 2.788475 2.679994 2.863353 3.220437 [13] 3.059344 3.051541 3.257024 3.358969 3.028908 3.421953 [19] 2.892686 3.138877 3.097010 2.978539 3.224138 2.086591 [25] 2.576973 2.918803 2.682981 2.625174 2.997243 3.068458 [31] 2.496968 3.519971 3.098808 1.882539 2.581418 2.527020 [37] 3.402880 3.069659 2.863192 2.501846 3.562625 2.840043 [43] 2.959190 2.853818 3.356341 4.461403 3.619685 2.428544 [49] 3.673904 2.761155 2.950630 3.162173 2.946491 3.197005 [55] 3.599023 2.430203 3.484282 2.563818 3.535696 3.199001 [61] 2.951949 3.490446 3.027803 3.827879 3.545298 2.944418
제 6 장추정 _ 145 [67] 2.227769 3.046476 4.067420 3.637768 2.699178 2.775919 [73] 3.901155 2.063341 3.439670 2.970812 2.586364 3.417553 [79] 2.858123 4.282643 3.336033 3.447982 3.409942 2.238515 [85] 3.790552 3.408887 3.076498 2.850088 2.812755 3.191278 [91] 3.609685 2.960486 2.560492 2.957969 3.674383 2.969041 [97] 2.806176 2.949856 2.954241 3.144629 > CIupper [1] 6.707636 5.519993 4.692259 5.085748 4.238771 6.402729 [7] 5.838286 5.296782 4.881355 4.691455 5.012433 5.637524 [13] 5.355525 5.341864 5.701572 5.880032 5.302245 5.990288 [19] 5.063782 5.494750 5.421461 5.214072 5.644003 3.652675 [25] 4.511111 5.109500 4.696684 4.595489 5.246813 5.371478 [31] 4.371059 6.161874 5.424607 3.295472 4.518893 4.423667 [37] 5.956901 5.373582 5.012150 4.379598 6.236542 4.971627 [43] 5.180201 4.995741 5.875431 7.809894 6.336428 4.251280 [49] 6.431340 4.833531 5.165215 5.535532 5.157970 5.596506 [55] 6.300257 4.254183 6.099398 4.488083 6.189401 5.600000 [61] 5.167524 6.110189 5.300310 6.700880 6.206210 5.154340 [67] 3.899813 5.332998 7.120209 6.368082 4.725038 4.859376 [73] 6.829153 3.611974 6.021303 5.200544 4.527551 5.982585 [79] 5.003278 7.496967 5.839881 6.035853 5.969262 3.918625 [85] 6.635538 5.967416 5.385554 4.989212 4.923859 5.586481 [91] 6.318921 5.182469 4.482260 5.178063 6.432179 5.197444 [97] 4.912342 5.163861 5.171537 5.504819 > pvalue1 [1] 0.059365461 0.445263806 0.836304403 0.667558618 [5] 0.950396583 0.112775148 0.295535011 0.560355653 [9] 0.762139944 0.836587466 0.702893025 0.387075359 [13] 0.529854093 0.536949332 0.356642919 0.278058096 [17] 0.557521927 0.234824428 0.678284751 0.458071934 [21] 0.495683276 0.603036470 0.383951114 0.995207162 [25] 0.892743695 0.655838906 0.834741009 0.868303202 [29] 0.586204653 0.521571287 0.926280445 0.176434103 [33] 0.494058478 0.999351346 0.890624839 0.914690263 [37] 0.247456105 0.520479744 0.703026500 0.924479633
146 _ R 기초및통계분석 [41] 0.154458251 0.721927270 0.620322274 0.710738072 [45] 0.279955249 0.003081599 0.128240912 0.948408171 [49] 0.106559718 0.782262224 0.627920030 0.437426138 [53] 0.631580980 0.407074407 0.137322176 0.947938374 [57] 0.196418993 0.898853957 0.168091943 0.405356954 [61] 0.626751454 0.192862620 0.558525412 0.060268861 [65] 0.163136320 0.633411882 0.985429029 0.541554870 [69] 0.021943166 0.120669129 0.824520124 0.771495324 [73] 0.044942131 0.996088025 0.223456829 0.609957335 [77] 0.888235164 0.237702517 0.707205799 0.007847395 [81] 0.294856592 0.218246940 0.242732095 0.984268856 [85] 0.069605521 0.243433826 0.514269323 0.713784971 [89] 0.743550819 0.412016516 0.132578477 0.619169279 [93] 0.900361295 0.621408161 0.106381603 0.611540571 [97] 0.748650567 0.628604973 0.624718737 0.452952109 > reject1<-pvalue1<=0.05 > table(reject1) reject1 FALSE TRUE 96 4 > color<-rep(gray(.7),100) > color[reject1]<-"black" > plot(0, xlim=c(1,7), ylim=c(1,100), ylab="sample No.", xlab="", main="95% Confidence Interval for sigma-square") > abline(v=4, lty=2) > for(j in 1:100) { + lines(c(cilower[j], CIupper[j]), c(j,j), col=color[j], lwd=1) + }
제 6 장추정 _ 147 95% Confidence Interval for sigma-square Sample No. 0 20 40 60 80 100 1 2 3 4 5 6 7 확률변수 는자유도가 n-1인 -분포를따른다. 신뢰수준이 가되는 의신뢰구간은다음과같다. 여기서확률변수 이므로위의확률등식을다음과같이다시쓸 수있다. 따라서 부터 까지의임의구간이모분산 를포 함할확률은 가되므로 에대한 100( )% 의신뢰구간은다음과같다. (, )
148 _ R 기초및통계분석 ( 연습 3) K제약회사에서두통약을개발하였으며이약의효과를알아보기위해두통환자 10명을임의로선정하여두통약을복용하게한후두통억제시간 ( 단위 : 분 ) 을측정하였다. 두통억제시간이정규분포할때, 모분산에대한 99% 의신뢰구간을구하라. 66 37 18 31 85 63 73 83 65 80 b1-ch6-5.r 을실행해보면모분산에대한 99% 신뢰구간은 (208.8612, 2839.822) 이다. 그러므로 는 99% 신뢰수준에서 (208.8612, 2839.822) 에속하게된다. > time<-c(66,37,18,31,85,63,73,83,65,80) b1-ch6-5.r 의실행결과 > df<-length(time)-1 > s.sq<-var(time) > u.chi<-qchisq(0.005, df=df, lower.tail=f) > u.chi [1] 23.58935 > l.chi<-qchisq(0.995, df=df, lower.tail=f) > l.chi [1] 1.734933 > LCL<-(df*s.sq/u.chi) > UCL<-(df*s.sq/l.chi) > LCL;UCL [1] 208.8612 [1] 2839.822
제 7 장 가설검정 1. 가설검정의기초개념 2. 단일집단에대한가설검정 3. 두집단에대한가설검정
150 _ R 기초및통계분석 제 7 장가설검정 1. 가설검정의기초개념 (1) 가설의종류 가설이란모집단의특성을대표하는모수에대한주장이나예상을의미하는데가설의종류에는귀무가설 (Null Hypothesis : ) 과대립가설 (Alternative Hypothesis : ) 이있다. 귀무가설에는모수의값하나만을설정하는단순가설과모수가속하는범위를설정하는복합가설이있다. 대립가설에는귀무가설에서설정된값을기준으로어느한쪽범위를포함하는단측대립가설과귀무가설에서설정된값을제외한양쪽범위를포함하는양측대립가설이있다.
제 7 장가설검정 _ 151 (2) 가설설정 일반적으로통계분석에서는모집단의모수에대하여관심이있으므로가설은모수에대하여설정한다. 모수가특정한값이다, 두모수의값이같다 등과같이간단하고구체적인경우를귀무가설로설정한다. 모수가특정한값이아니다, 한모수의값이다른모수의값보다크다, 두모수의값이다르다 등과같이모수에대한관심의영역중에서귀무가설로지정되지않은모든경우를포괄적으로대립가설로설정한다. (3) 가설검정 모집단에대한어떤가설을설정한뒤에표본관찰을통하여그가설의채택여부를결정하는분석방법을가설검정이라고한다. 가설검정이란두가설 와 중에서하나를선택하는과정이므로 를채택 (accept) 하면 을기각 (reject) 하게되고 를기각하면 을채택하게된다. 따라서가설검정이란 두가설중에서귀무가설 를채택하든지또는기각하는과정 이라고이해할수있다. (4) 검정통계량 검정통계량은가설검정에서관찰된표본으로부터구하는통계량으로분포가가설에서주어지는모수에의존한다. 귀무가설이옳다는전제하에서구한검정통계량의값이나타날가능성이크면귀무가설을채택하고나타날가능성이작으면귀무가설을기각한다. 검정통계량 표본통계량 모수의귀무가설의값표본통계량의표준오차 가설검정은단일집단모평균및모분산에대한가설검정이있고, 두집단의모평균
152 _ R 기초및통계분석 및모분산에대한가설검정이있는데이와관련된검정통계량으로정리해보면 < 표 7-1> 과같다. < 표 7-1> 가설검정의유형에따른검정통계량 구분 단일집단 두집단 모평균 Z-검정통계량, t-검정통계량 Z-검정통계량, t-검정통계량 모분산 -검정통계량 F-검정통계량 한편, 모평균가설검정을위한의사결정트리를그려보면 < 그림 7-1> 과같다. < 그림 7-1> 모평균가설검정을위한의사결정트리 (5) 유의수준과신뢰수준 유의수준 란귀무가설이옳은데도불구하고이를기각하는확률의크기를말하며검정통계량을구하는것과는무관하게검정을실시하는사람의판단에따라결정되
제 7 장가설검정 _ 153 는데일반적으로유의수준은 1%, 5%, 10% 중하나를정한다. 가설검정에서유의수준 % 는구간추정에서신뢰수준 (100- )% 와동일한의미를갖는다. 예를들어, 표준정규분포에서 95% 신뢰구간은 에의하여 (-1.96, 1.96) 임을알수있는데, 표준정규분포를이용하는검정에서 5% 유의수준하에서의기각역은 (-, -1.96) 과 (1.96, ) 로위의 95% 신뢰구간과반대가된다. 이와같이 5% 유의수준하에서의기각역은 95% 신뢰수준하에서의신뢰구간과반대의의미를가지고있기때문에유의수준 % 하에서의검정은 (100- )% 의신뢰수준하에서의검정이라고도한다. (6) 기각역 기각역이란가설검정에서유의수준 가정해졌을때, 검정통계량의분포에서이유의수준의크기에해당하는영역을말하는데, 이영역의위치는대립가설의형태에따라달라진다. 대립가설의형태는가설검정의목적에의하여결정되는데가설검정은대립가설의형태에따라양측검정과단측검정으로나누어지고, 단측검정은다시왼쪽단측검정과오른쪽단측검정으로분류된다.
154 _ R 기초및통계분석 (7) 가설검정단계 가설검정과정을단계적으로설명하면다음과같다 (8) 제 1 종의오류및제 2 종의오류 제1종오류 (type I error) 는귀무가설 가옳은데도불구하고 를기각하는오류를말한다. 이것이나타날확률을제1종오류의크기라고하는데, 이는앞에서정의된유의수준 와같다. 제2종오류 (type Ⅱ error) 는귀무가설 가옳지않은데도 를채택하는오류를말한다. 이것이나타날확률을제2종오류의크기라고하는데이를 로표현한다. 가설검정결과정확한사실 가사실이라고판정 가사실이아니라고판정 가사실임 옳은결정 제1종의오류 ( ) 가사실이아님 제2종의오류 ( ) 옳은결정 b1-ch7-1.r을실행하면 이사실이아님에도불구하고 을채택하는제2종의오류를보여준다. 평균이 10이고표준편차가 2인모집단 ( 이사실인귀무가설 ) 에서 100개의표본을추출하여,, 의가설 ( 가사실이아님 ) 을검정하기위한신뢰구간을살펴보면귀무가설의값이사실에서멀어질수록신뢰구간이귀무가설이사실이아닌모평균을포함하는경우는