데이터분석/기초통계

R의 기본 통계 기능

늘근이 2015. 11. 16. 22:19

 

 

아래의 내용은 '데이터 분석 전문가/준전문가' 라는 책에 있는 내용을 따라서 해본것이며, 나름 재미있다. 교과서 답지않게 딱딱하지도 않고 내공이 돋보인다. 사 보도록 한다.  

 

모수적 통계분석 기법개요

빈도분석 / 상관분석 / 표본평균검증 / 세집단 이상의 평균검정 / 회귀분석

 

비모수적 통계분석 기법개요

적합도 검정 / 변수간 상관분석

 

표본추출

단순랜덤샘플링

계통샘플링 : 임의 위치에서 매 k번째 항목 추출

층화샘플링 : 명확하게 다른 데이터를 중첩없이 분할하여 샘플링

집락추출 : 군집을 구분하고 군집별로 단순랜덤샘플링한 후 모든자료를 활용

 

추출 명령어

 

비복원추출

sample(1:100,5)

 

 

복원추출(한번뽑은걸 다시뽑음) 

sample(1:100,5,replace=TRUE)

 

가중치부여

sample(1:100, 5, replace=T, prob=1:100 )

 

층화추출

층화추출을 하기위해서는 다음과 같이 패키지설치가 필요하다.

install.packages("sampling")
 
library(sampling)

그리고 샘플데이터인 iris 를 로드할수 있다.

data("iris")

 

비복원 층화추출은

x<-strata(c("Species"),size=c(2,2,2),method="srswor",data=iris)

복원 층화추출은

x<-strata(c("Species"),size=c(2,2,2),method="srswr",data=iris)

 

결과값은 다음과 같이 나타난다.

    Sepal.Length Sepal.Width Petal.Length Petal.Width
8            5.0         3.4          1.5         0.2
32           5.4         3.4          1.5         0.4
67           5.6         3.0          4.5         1.5
85           5.4         3.0          4.5         1.5
113          6.8         3.0          5.5         2.1
118          7.7         3.8          6.7         2.2
       Species ID_unit Prob Stratum
8       setosa       8 0.04       1
32      setosa      32 0.04       1
67  versicolor      67 0.04       2
85  versicolor      85 0.04       2
113  virginica     113 0.04       3
118  virginica     118 0.04       3

 

계통 샘플 추출

install.packages("doBy")
library(doBy)
x<-data.frame(x=1:100)
sampleBy(~1, frac=.3, data = x, systematic = T)
 
 
 
 [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
1    1    4    7   11   14   17   21   24   27    31    34
  [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21]
1    37    41    44    47    51    54    57    61    64    67
  [,22] [,23] [,24] [,25] [,26] [,27] [,28] [,29] [,30]
1    71    74    77    81    84    87    91    94    97

 

난수발생

 

rnorm(5, mean=10, sd=25)
 
[1] 92 67 46 40 19

확률계산

pnorm(0,mean=0,sd=1)
 
[1] 0.5

표준정규분포

qnorm(0.9, mean=0, sd=1)
 
[1] 1.281552

 

표준정규분포 그리기

plot(density(rnorm(1000,0.1)))

 

 

 

 

* 참고 - 귀무가설, 대립가설, 유의수준, 검정력, 기각역, 유의확률

t.test(x) 로 검정할수 있는데, 다음과 같은 테스트가 가능하다.

	One Sample t-test

data:  x
t = -0.5215, df = 999, p-value = 0.6021
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
 -0.07757682  0.04500120
sample estimates:
  mean of x 
-0.01628781

즉, 대립가설은 평균이 0이 아니다라고 하는데, 귀무가설은 평균은 0이다. 들어간 데이터셋은 평균 0에 수렴하는  정규분포를 따르는 1000개의 데이터인데, 모평균의 평균은 -0.016이며, 95퍼센트의 신뢰도를 가지는 구간은 -0.07 ~ 0.04이다. p-value는 0.05보다 훨 큰 값이므로, 귀무가설을 기각할수 없다.

 

독립 2표본 평균검정

> t.test(extra~group, data=sleep, paired=F, var.equal=T)

	Two Sample t-test

data:  extra by group
t = -1.8608, df = 18, p-value = 0.07919
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -3.363874  0.203874
sample estimates:
mean in group 1 mean in group 2 
 
 
귀무가설 기각불가 

대응 표본 평균검정

> t.test(extra~group, data=sleep, paired=T, var.equal=T)

	Paired t-test

data:  extra by group
t = -4.0621, df = 9, p-value = 0.002833
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -2.4598858 -0.7001142
sample estimates:
mean of the differences 
                  -1.58 

귀무가설 기각

 

이표본분산

분산이 같지 않다는 대립가설

> var.test(iris$Sepal.Width, iris$Sepal.Length)

	F test to compare two variances

data:  iris$Sepal.Width and iris$Sepal.Length
F = 0.27706, num df = 149, denom df = 149, p-value =
3.595e-14
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
 0.2007129 0.3824528
sample estimates:
ratio of variances 
         0.2770617 

귀무가설 기각 - 분산이 같지 않음.

 

일표본비율

100번중 45번이 나왔으면 과연 50%확률일까?

> prop.test(45,100)

	1-sample proportions test with continuity correction

data:  45 out of 100, null probability 0.5
X-squared = 0.81, df = 1, p-value = 0.3681
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
 0.3514281 0.5524574
sample estimates:
   p 
0.45 

p-value 0.05이상, 귀무가설 채택, 50%라고 할수있다.

 

이표본비율

44/100 55/90 이 같은확률인가?

> prop.test(c(44,55),c(100,90))

	2-sample test for equality of proportions with
	continuity correction

data:  c(44, 55) out of c(100, 90)
X-squared = 4.8929, df = 1, p-value = 0.02697
alternative hypothesis: two.sided
95 percent confidence interval:
 -0.32169925 -0.02052297
sample estimates:
   prop 1    prop 2 
0.4400000 0.6111111 

귀무가설 기각

 

상관계수 검정

두 벡터간의 상관관계 측정

> cor.test(c(1,2,3,4,5),c(1,4,2,5,1),method="pearson")

	Pearson's product-moment correlation

data:  c(1, 2, 3, 4, 5) and c(1, 4, 2, 5, 1)
t = 0.15133, df = 3, p-value = 0.8893
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.8613737  0.9001792
sample estimates:
       cor 
0.08703883 
 
귀무가설 채택. 

 

독립성 검정

chisq.test()

 

정규분포 값 여부 검정 

벡터가 정규분포를 이루는지에 대한 테스트

> shapiro.test(rnorm(1000))

	Shapiro-Wilk normality test

data:  rnorm(1000)
W = 0.99836, p-value = 0.4652
 

귀무가설 채택

 

 

 

정규분포여부 검정

 

 

> ks.test(rnorm(100), runif(100))

	Two-sample Kolmogorov-Smirnov test

data:  rnorm(100) and runif(100)
D = 0.42, p-value = 4.366e-08
alternative hypothesis: two-sided