일반통계 with R
귀무가설아무것도일어나지않은경우. 해당변수들이서로독립적이다. 대립가설귀무가설과반대되는가설. 무엇인가일어난경우. 해당변수들이서로독립적이지않다. 가설검정과정 1. 귀무가설이참이라고가정. 2. 검정통계량을계산. 표본의평균처럼단순한것일수도있고, 복잡한것일수도있다. 해당통계의분포는알아야함. 표본평균의분포는중심극한정리를사용하면된다. 3. 통계량과그것의분포로부터 p- 값을계산해낼수있음. 이것은귀무가설이참이라고가정할때, 검정통계량이극단이거나관찰한것보다더극단에있을확률이다. 4. p- 값이매우작다면귀무가설에반대되는강력한증거. -> 귀무가설기각 5. p- 값이매우작지않다면대립가설을뒷받침하는증거가없다고본다. -> 귀무가설기각실패 p- 값은얼마??? 0.05 가일반적. 그러나그때그때정확도를높이기위해선더작은값을설정해야할때도있다. 신뢰구간 위에가설의증거를수치화시키는것. 1
데이터요약보기 summary(), lapply() 함수사용하는방법. 데이터에관한기본적인통계정보들을요약해서볼때사용하는방법을소개한다. Summary( 벡터 ) > vec [1] 1.1 1.2 1.3 2.1 2.2 2.3 > summary(vec) Min. 1st Qu. Median Mean 3rd Qu. Max. 1.100 1.225 1.700 1.700 2.175 2.300 위는벡터의요약을보여준다. 각각의요소의의미는다음과같다. Min. 최소값. 1st Qu. 첫번째사분위수. Median 중앙값. Mean 평균값. 3rd Qu. 세번째사분위수. Max 최대값. 이것을보면비대칭정도를빠르게알수있다. 위에경우에는평균이중앙값과같으므로어느한쪽으로기울어지지않은그래프임을알수있다. 2
Summary( 행렬 ) > mat [,1] [,2] [,3] [1,] 1.1 1.3 2.2 [2,] 1.2 2.1 2.3 > summary(mat) V1 V2 V3 Min. :1.100 Min. :1.3 Min. :2.200 1st Qu.:1.125 1st Qu.:1.5 1st Qu.:2.225 Median :1.150 Median :1.7 Median :2.250 Mean :1.150 Mean :1.7 Mean :2.250 3rd Qu.:1.175 3rd Qu.:1.9 3rd Qu.:2.275 Max. :1.200 Max. :2.1 Max. :2.300 행열을요약하면열단위로출력이된다. 3 열이기에위에도 v1, v2, v3 로세개의열이출력되었다. 3
Summary( 요인 ) 여기서요인 =factor 이다. > fac <- factor(c("a","b","c","c","c","a")) > summary(fac) A B C 2 1 3 Factor 를요약한정보는수준별도수이다. 즉, count( 횟수 ) 를보여준다. 여기서는 A 가두번, B 는한번, C 는 3 번나왔기에그횟수를출력해주었다. Summary( 데이터프레임 ) 데이터프레임을요약하면위에소개된기능을다사용한다. 열별로표시하면서열의형식에맞는요약을보여줌. 수치형값은통계요약으로출력. 요인은도수가출력. 문자열은요약되지않는다. > summary(df) vec fac Min. :1.100 A:2 1st Qu.:1.225 B:1 Median :1.700 C:3 Mean :1.700 3rd Qu.:2.175 Max. :2.300 > fix(df) 4
Summary( 리스트 ) > vec2 <- c(1,2,3,4,5,5) > v.list <- list(vec,vec2) > v.list [[1]] [1] 1.1 1.2 1.3 2.1 2.2 2.3 [[2]] [1] 1 2 3 4 5 5 > summary(v.list) Length Class Mode [1,] 6 -none- numeric [2,] 6 -none- numeric 리스트를 summary 함수를이용해요약해보면위와같이나온다. 각리스트원소의자료형만보여준다. 5
lapply( 리스트,summary) 벡터로된리스트를요약하려면, summary 를리스트의각원소에적용하도록해야한다. 즉 lapply() 함수를사용해야한다. > lapply(v.list,summary) [[1]] Min. 1st Qu. Median Mean 3rd Qu. Max. 1.100 1.225 1.700 1.700 2.175 2.300 [[2]] Min. 1st Qu. Median Mean 3rd Qu. Max. 1.000 2.250 3.500 3.333 4.750 5.000 위와같이각벡터에대해요약을한것을확인할수있다. 그러나 summary 함수로는표준편차나중앙절대편차등, 어떠한산점도 1 를계산할수없다. 이것을해결하려면 sd 함수와 mad 함수를사용하면된다. Mad() Compute the median absolute deviation, i.e., the (lo-/hi-) median of the absolute deviations from the median, and (by default) adjust by a factor for asymptotically normal consistency. Sd() This function computes the standard deviation of the values in x. If na.rm is TRUE then missing values are removed before computation proceeds. 1 자료의퍼져있는정도를나타내는지표. 대푯값의신뢰도를추정하는수단으로사용. 6
상대도수계산 > mean(vec>2) [1] 0.5 > mean(fac=="a") [1] 0.3333333 Mean( 비교식 ) 형태로사용하고, 의미는비교식의참인것의비율이다. Vec 는 6 개의값이있는데, 그중 2 를초과하는것의비율은절반이다. Fac 는 A 의값이 6 개중 2 개로 1/3 으로위와같은비율이나온다. 7
요인 (factor) 의도수분포표 & 분할표생성.- table() > table(fac) fac A B C 2 1 3 이것은 summary() 함수와다르지않는모습을보여준다. 각항목의횟수를보여준다. > fac2 <- factor(c("t","f","f","f","t","t")) > table(fac,fac2) fac2 fac F T A 0 2 B 1 0 C 2 1 위에는요인과요인을분할표 ( 교차표 ) 로만든것이다. 이것이 table() 함수의강력한기능이다. 각수치는해당행-열조합의발생횟수이다. A 와 T 의조합이 2 번일어났다는의미이다. Xtabs 함수로도가능 formula 인터페이스로구성 8
범주형변수의독립성검정 카이제곱검정을사용해서요인으로표현되는두개의범주형변수의독립성을검증하기위해사용하는방법. > summary(table(fac,fac2)) Number of cases in table: 6 Number of factors: 2 Test for independence of all factors: Chisq = 3.333, df = 2, p-value = 0.1889 Chi-squared approximation may be incorrect 분할표를 summary 해주기만하면된다. p- 값이 0.05 보다낮으면해당변수들이서로독립적이지않다는의미. 반대면독립적이다는의미.( 독립적이지않다는증거를제시하지못했다는의미 ) 이것은오류가난듯. 9
데이터세트의분위수및사분위수계산 Quantile() 함수를이용하면분위수와사분위수를계산할수있다. 분위수를구할경우 Quantile(vector, fraction) > quantile(vec,.05) 5% 1.125 > quantile(vec, c(.05,.9)) 5% 90% 두번째인자는확률로상대도수이다. 즉, 이방법은해당상대도수에해당하는분위수값을구하는것이다. 이렇게하면원하는영역의값을얻을수있지만극단값이존재할수있어서부정확할수있다. 사분위수를구할경우 Quantile(vector) > quantile(vec) 0% 25% 50% 75% 100% 1.100 1.225 1.700 2.175 2.300 이방법은위와다르게상대도수없이출력을요구하는것인데, 사분위수로구간을나누어출력을한다. 이함수는 9 가지의알고리즘이구현되었고도움말페이지를참조해보면좀더자세히알수있다. 10
역분위수 관측값이있을때, 그것에상응하는분위수를구하려면앞에서사용한 mean 함수를사용하면된다. 단, 비교식은 < 을사용한다. > mean(vec<1.3) [1] 0.3333333 > mean(vec<1.2) [1] 0.1666667 즉해당하는조건을만족하는값의비율을보여주는것은똑같다. 의미는역분위수를나타내는것이다. 11
데이터를 z 점수로변환 데이터정규화 > scale(vec) [,1] [1,] -1.0811250 [2,] -0.9009375 [3,] -0.7207500 [4,] 0.7207500 [5,] 0.9009375 [6,] 1.0811250 attr(,"scaled:center") [1] 1.7 attr(,"scaled:scale") [1] 0.5549775 > scale(table(vec,vec2)) vec2 vec 1 2 3 4 5 1.1 2.0412415-0.4082483-0.4082483-0.4082483-0.6454972 1.2-0.4082483 2.0412415-0.4082483-0.4082483-0.6454972 1.3-0.4082483-0.4082483 2.0412415-0.4082483-0.6454972 2.1-0.4082483-0.4082483-0.4082483 2.0412415-0.6454972 2.2-0.4082483-0.4082483-0.4082483-0.4082483 1.2909944 2.3-0.4082483-0.4082483-0.4082483-0.4082483 1.2909944 Scale() 함수는벡터, 행렬, 데이터프레임에대해작동. 수치형데이터만가능하다. 행렬과데이터프레임의경우엔각열을독립적으로정규화시킨뒤정규화된값으로이루어진열들을행렬로반환한다. 하나만을보고싶을때는이러한공식을이용하면된다 ( 정규화하고싶은값 - 평균 )/ 표준편차 = z 점수 ( 정규화된값 ) >(y mean(x)) / sd(x) 목적은정규분포곡선을이용해서해당값의위치를유추하기쉽기때문에사용된다. 12
표본을이용한모평균검정 (t 검정 ) 모집단에서나온표본이주어졌을때, 모집단의평균이합리적으로특정값 a 일수있는지를검정하기위한방법. > x <- rnorm(50, mean=100, sd=15) > t.test(x,mu=95) One Sample t-test data: x t = 2.4964, df = 49, p-value = 0.01596 alternative hypothesis: true mean is not equal to 95 95 percent confidence interval: 96.01257 104.37170 sample estimates: mean of x 100.1921 p-값 <0.05 을만족하므로 95 가모집단의평균일개연성은낮다는것을알수있다. p-값이크면귀무가설이맞는것, 아니면대립가설이맞는것. T 검정은차이가있는지를검사하는것이목적이기에위처럼 p-값의크기가작으면차이가있음을나타낸다. Mu 인자를넣지않으면아래와같이 0 으로계산한다. > t.test(x) One Sample t-test data: x t = 48.1734, df = 49, p-value < 2.2e-16 p-값 alternative hypothesis: true mean is not equal to 0 95 percent confidence interval: 96.01257 104.37170 신뢰구간 sample estimates: mean of x 100.1921 T 검정에대한내용참조 히든그레이스 : 통계 :t 검정 13
모평균의신뢰구간모평균에대한신뢰구간을확인해보자. > t.test(x) One Sample t-test data: x t = 48.1734, df = 49, p-value < 2.2e-16 p-값 alternative hypothesis: true mean is not equal to 0 95 percent confidence interval: 96.01257 104.37170 신뢰구간 sample estimates: mean of x 100.1921 앞에서설명할때 mu 인자를넣지않았을경우의방법이모평균의신뢰구간을확인할수있다. 신뢰구간은 96.012 < < 104.371 이다. 신뢰수준을올릴순없을까??? 방법은있다. Conf.level=0.99 로하면 99% 로높일수있다. > t.test(x,conf.level=0.99) One Sample t-test data: x t = 48.1734, df = 49, p-value < 2.2e-16 alternative hypothesis: true mean is not equal to 0 99 percent confidence interval: 94.61831 105.76597 sample estimates: mean of x 100.1921 신뢰수준을높이기전과의차이는신뢰구간의크기일것이다. 신뢰구간이더넓어진것을볼수있다. 신뢰수준에따라신뢰구간을정할수있다. 기본 95% 이다. 14
중앙값에대한신뢰구간중앙값에대한신뢰구간을구해보자. > wilcox.test(x, conf.int=true) Wilcoxon signed rank test with continuity correction data: x V = 1275, p-value = 7.79e-10 alternative hypothesis: true location is not equal to 0 95 percent confidence interval: 96.00775 104.90234 sample estimates: (pseudo)median 100.32 > median(x) [1] 100.0443 위에보면신뢰구간은 96.00< < 104.90 이고, (pseudo)median 는중앙값이아니다. Median() 함수를보면다른것을확인할수있다. > wilcox.test(x, conf.level=0.99,conf.int=true) Wilcoxon signed rank test with continuity correction data: x V = 1275, p-value = 7.79e-10 alternative hypothesis: true location is not equal to 0 99 percent confidence interval: 94.19252 106.65332 sample estimates: (pseudo)median 100.32 15
표본비율을이용한모비율검정성공과실패로구성된모집단의표본을가지고있다. 성공이차지하는실제비율이 p 라고가정할때그곳을표본데이터를사용해서검정하는방법이다. SK 와두산의경기중 SK 가 30 경기중 19 경기를이겼다. 그럼이번시즌두산을상대로절반이상의경기를이길것이라고생각해도될까??? 이것을검정하기위한방법이있다. Prop.test(x,n,p) 함수를이용하는것이다. X 는표본의성공횟수 =19 N 은표본의크기 =30 P 는성공이차지하는비율 =0.5(P > 0.5) 그러면대입시키면 > prop.test(19,30,0.5,alternative="greater") 1-sample proportions test with continuity correction data: 19 out of 30, null probability 0.5 X-squared = 1.6333, df = 1, p-value = 0.1006 alternative hypothesis: true p is greater than 0.5 95 percent confidence interval: 0.4668433 1.0000000 sample estimates: p 0.6333333 위에결과를보면실제 P( 성공을차지할확률 ) 은 0.5 보다크지만 p-값의크기는 0.05 보다큰 것을확인할수있다. 이것은귀무가설이틀렸다는의미이고, 실제절반이상이길지는모른다는 것이다. 즉, P 가 0.5 보다크다고해서합리적으로결론을도출하는것은아니다는것을 입증했다. 일반적으로 prop.test() 함수는 P 0.5 인경우가많다. 16
모비율의신뢰구간 만약전에배운성공확률을검정하기위해서신뢰구간을알아야하지않겠는가??? 로또를파는집이있는데 10 번을팔았는데 7 번이 1 등에당첨되었다고한다. 그러면이집에서사면로또에당첨될확률은 7/10 이맞지않는가? 다음에여기서살때당첨될확률이저확률이맞는지를확신하기위해다음과같이해보자. > prop.test(7,10) 1-sample proportions test with continuity correction data: 7 out of 10, null probability 0.5 X-squared = 0.9, df = 1, p-value = 0.3428 alternative hypothesis: true p is not equal to 0.5 95 percent confidence interval: 0.3536707 0.9190522 sample estimates: p 0.7 확률은 0.7 로맞지만 95% 신뢰수준에서의신뢰구간은 0.354 > > 0.919 으로 35% 와 91% 로확률이변동이있는것을볼수있다. 이렇게큰차이가나는것은표본의크기가작기때문에제대로된값을도출할수없는것이다. 17
정규성검정정규분포로된모집단에서나온표본인지를검정하는방법 여러가지가있지만그중샤피로 - 윌크검정을사용하는방법. > shapiro.test(x) Shapiro-Wilk normality test data: x W = 0.9592, p-value = 0.08238 p- 값이 0.05 보다작다면모집단이정규분포가아닐가능성이크다는것을의미. 반대로클경우, 정규분포라고본다. Nortest 패키지를설치하면 Ad.test Cvm.test Lillie.test Pearson.test Sf.test 를사용할수있다. 그러나이검정방법들은검증전까지정규분포라는귀무가설을사용한다. 즉, 확실히정규분포가아니라는것이증명되지않으면정규분포라고보기에오류가발생될수도있다. 그래서히스토그램분위수 - 분위수그래프도함께사용할것을권장한다. 18
런검정수열이랜덤인지를확인하기위한방법 Run 은모두 1 또는모두 0 처럼동일한값들로이루어진부분수열이다. 랜덤한수열이란런이적당히존재하는것을의미한다. 0,1,0,1,0,1,0,1,0 같은경우런은없지만랜덤은아니다. 즉, 적당히존재해야만한다. 랜덤인지아닌지학인하려면두가지가필요하다. Library(tseries) Runs.test(as.factor(s)) 이다. Tseries패키지안에 runs.test함수가존재하기에라이브러리가필요하다. 실습해보자. zoo: S3 Infrastructure for Regular and Irregular Time Series (Z's ordered observations) tseries: Time series analysis and computational finance quadprog: Functions to solve Quadratic Programming Problems 실습을위해서는위에 3 가지패키지를추가해야한다. 이함수는 p- 값을보여주는데 0.05 보다작은 p- 값은그수열이랜덤이아닐가능성이크다는의미. 반대로 0.05 를넘으면그럴가능성을찾지못했다는것을의미. > library(tseries) tseries version: 0.10-32 tseries is a package for time series analysis and computational finance. See library(help="tseries") for details. > s<-sample(c(0,1),100,replace=t) > runs.test(as.factor(s)) Runs Test data: as.factor(s) Standard Normal = -2.1987, p-value = 0.0279 alternative hypothesis: two.sided > s [1] 0 0 0 1 1 0 1 1 1 0 1 0 0 0 0 1 1 1 0 0 0 0 1 1 0 0 1 1 0 0 1 0 0 1 1 0 0 0 1 1 1 [42] 1 1 1 1 1 0 1 1 0 0 0 1 1 1 1 0 1 1 0 1 1 1 0 1 0 0 1 0 0 1 0 0 0 1 1 1 1 1 1 1 1 [83] 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 위에결과를보면 p- 값은 0.0279 로 0.05 보다작다. 즉, 랜덤이아닐개연성이크다는것을의미한다. 19
두모집단의평균비교두모집단의표본이각각존재하고평균을비교하고싶을때방법. > y <- rnorm(50,mean=90, sd=25) > t.test(x,y) Welch Two Sample t-test data: x and y t = 3.1399, df = 73.484, p-value = 0.002435 alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: 5.191251 23.228400 sample estimates: mean of x mean of y 100.19214 85.98231 > t.test(x,y,paired=true) Paired t-test data: x and y t = 2.9609, df = 49, p-value = 0.004718 alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: 4.565467 23.854183 sample estimates: mean of the differences 14.20983 여기서 p-값이 0.05 보다작다면평균은다를개연성이크고반대면그런증거는없다는의미이다. Paired=TRUE 는데이터가서로대응할때사용하는요인이다. 기본은서로대응하지않는다고설정되어있다. 즉, 독립된것인지아닌지를따져서수행해야한다. 예를들면, 우유를술먹기전에마시면술에덜취하는지를확인할때 1. A 그룹은우유를주고 B 그룹은우유를안주고술을마신뒤해독능력을확인하는것. 2. A 그룹이하루는우유를먹고술을마시고, 하루는우유를안마시고술을마시는것. 이경우를따져서사용해야한다는것이다. 왜냐하면둘이독립적인경우와아닌경우가있기때문에결과가달라진다. 이검정의조건이있는데다음과같다. 둘중하나의표본이라도 20 보다작으면, 모집단들은정규분포를따라야한다. 두모집단의분산이 ; 동일하다면, var.equal=true 라고명시해서조금덜보수적으로검정을수행할수있다. 20