Data Science Issue

기초통계 R 실습

뉴욕킴 2023. 5. 2. 18:02
표본추출과 표본분포 (week 6)
데이터분석을 위한 통계

랜덤 표본 (random sample) 추출

:알려진 확률 분포로부터 임의로 데이터를 생성

예를 들어, 지난 몇년간 통계학 입문 강좌를 수강하는 학생들의 기말시험성적이 평균 50점, 표준편차 20점의 정규분포를 따른다는 사실을 알고 있다고 하자. 이 분포를 따르는 성적자료 100개를 임의로 생성해보자.

 

n=100, mean=50, sd=20, rnorm() : 정규분포 

rnorm(n, mean=0, sd=1)

sample.data<-rnorm(n=100, mean=50, sd=20)
sample.data

평균 추출

mean(sample.data)

표준편차 추출

sd(sample.data)

히스토그램 그리기

hist(sample.data)

 

이항분포에서 랜덤표본 추출

시행 횟수가 size이고, 성공률이 p인 베르누이 시행을 했을 때의 성공 횟수를 n번 추출하려면:

x<- rbinom (n=100, size=1, p=0.8)
x

 

 

카이제곱 분포
  • 확률 밀도함수
x<-seq(0,10,by=0.01)
for ( i in c(1,2,3,4,6,10)){
        chi.x<-dchisq(x,df=i)
        if (i==1){plot(chi.x~x,type="l",ylim=c(0,0.5), 
                       col=i,ylab="density")}
        else{lines(chi.x~x,type="l",col=i)}
}
legend("topright",legend=c("1","2","3","4","6","10"),
       col=c(1,2,3,4,6,10),lty=c(1,1,1,1,1,1))

  • 랜덤표본 추출
y<-rchisq(n=100, df=5)
hist(y)

mean(y)
var(y)

t분포의 pdf 그리기
x<-seq(-5,5,by=0.01)

for ( i in c(2,3,5,10)){
        t.x<-dt(x=x, df=i)
        if (i==2){ plot(t.x~x,type="l",ylim=c(0,0.5), 
                       col=i,ylab="density")}
        else{lines(t.x~x,type="l",col=i)}
}
legend("topright",legend=c("2","3","5","10"),
       col=c(2,3,5,10), lty=c(1,1,1,1))

x<-seq(-10,10,by=0.01)
Z<-rnorm(10000)
n<-10
V<-rchisq(10000,df=n)
tval<-Z/sqrt(V/n)
hist(tval, freq=FALSE, ylim=c(0,0.5))
t.d<-dt(x,df=n)
lines(t.d~x,type="l")

 

mean(tval); var(tval); n/(n-2)

모평균에 대한 신뢰구간

사과의 평균 무게(mu)에 대한 95% 신뢰구간은? 주어진 자료는 아래와 같음. n=30, xbar = 340, s=50, alpha = 0.05

# 𝑛이 충분히 크면 표본의 표준편차 s가 모집단의 표준편차 sigma에 가까울 것이므로 sigma를 s로 대체하여 구함

n <- 30
xbar <- 340
s <- 50
z.cut <- abs(qnorm(0.025))
lb <- xbar - z.cut*(s/sqrt(n))
ub <- xbar + z.cut*(s/sqrt(n))

print(c(xbar, lb,ub))
# 모분산을 모를때, t 분포 사용
t.cut <- qt(0.025, df=n-1, lower.tail = F)
lb <- xbar - t.cut*(s/sqrt(n))
ub <- xbar + t.cut*(s/sqrt(n))

print(c(xbar, lb,ub))
모비율 신뢰구간 구하기
### 총 100명의 학생 중 흡연자는 29명(smoke=1), 비흡연자는 71명(smoke=0)이었다. 
### 흡연을 하는 학생의 비율의 95% 신뢰구간은?

x<-29; n<-100
phat<-x/n
se<-sqrt(phat*(1-phat)/n)
c(phat - 1.96*se, phat + 1.96*se) ## Confidence interval (Wald)
prop.test(x=29, n=100, correct=FALSE) # Score-test base CI

모평균 검정

예) 콜레스테롤 수치를 낮추는데 있어서 운동을 하는 것이 효과적인가를 판단하는 방법은?

## H0 : mu = 200 vs H1 : mu<200 
## Data: xbar = 190, sd = 24, n=40 

mu0 = 200 
xbar = 190; sigma=24; n=40

## significance level 

alpha<-0.05 

## test statistics 

Z<- (xbar - mu0)/(sigma/sqrt(n))
Z
## [1] -2.635231
## critical value approach 
cut<-qnorm(alpha)
cut
## [1] -1.644854
Z < cut
## [1] TRUE
## p-value approach
pval <- pnorm(Z) # p-value
pval
## [1] 0.004203997
pval< alpha
## [1] TRUE

ex1 자료가 모집단 (전국 학생들)의 임의 표본이라고 가정할 때, 중간고사 성적의 모평균이 75점이라고 할 수 있는가?

# one sample t-test (모분산을 모를때)
# H0: mu=75
# H1: not H0
ex1 <- read.csv("/Users/donghwan/Dropbox/Teaching/22-2/DS_stat/STAT_Basic/Note/Data/ex1.csv", header = T)

t.test(ex1$Midterm, mu = 75, alternative = "two.sided")
## 
##  One Sample t-test
## 
## data:  ex1$Midterm
## t = -0.50261, df = 59, p-value = 0.6171
## alternative hypothesis: true mean is not equal to 75
## 95 percent confidence interval:
##  71.51314 77.08686
## sample estimates:
## mean of x 
##      74.3
## p-value: 0.6171 > 0.05

유의수준 0.05 < p-value 값 0.6171 이므로, 이 모평균이 75점이라는 가설을 기각하지 못한다.

 

모비율 검정

예) 총 100명의 학생 중 흡연자는 29명(smoke=1), 비흡연자는 71명(smoke=0)이었다. 흡연을 하는 학생의 비율이 0.2보다 큰지 검정해보시오.

#One sample proportion test
#Normal approximation (정규근사)
#H0: p = 0.2
#H1: p > 0.2
prop.test(x=29, n=100, p=0.2, alternative = "greater")
# 정규분포로 근사하지 않고, 이항분포 사용
# Exact binomial test
binom.test(x=29, n=100, p=0.2, alternative = "greater")

두 집단의 평균 비교
### ex1 자료가 모집단 (전국 학생들)의 임의 표본이라고 가정할 때, 남학생과 여학생 집단의 기말고사 성적을 비교.



ex1 <- read.csv("/Users/donghwan/Dropbox/Teaching/22-2/DS_stat/STAT_Basic/Note/Data/ex1.csv", header = T)



Final_M <- ex1[ex1$Gender=="M",]$Final
Final_F <- ex1[ex1$Gender=="F",]$Final

boxplot(Final_M, Final_F)

1) 95% 신뢰구간 구하기

n=50, mean=162, sd=5

 

162 - 1.96 * (5 / sqrt(50)) <= m <= 162 + 1.96 * (5 / sqrt(50))

> 162 - 1.96 * (5 / sqrt(50)) 
[1] 160.6141
> 162 + 1.96 * (5 / sqrt(50)) 
[1] 163.3859

 

> n <- 50
> mu <- 162
> sigma <- sqrt(5^2 / n)
> interval <- mu + c(-1.96, 1.96) * sigma
> 
> interval
[1] 160.6141 163.3859

 

2) 최소 몇명의 표본 필요

n = (z*(sigma/1))^2

n = (1.96 * 5 / 1)^2

n = 96.04

→ 최소 97명 필요 

 

 

 

1) 점추정값 표준편차 계산

점 추정값: p̂ = X / n = 130 / 500 = 0.26 표준편차: s = sqrt(p̂(1-p̂) / n) = sqrt(0.26(1-0.26) / 500) = 0.031

 

2) 모시청률의 95% 신뢰구간 구하기

p̂ ± z* (sqrt(p̂(1-p̂) / n))

0.26 ± 1.96 * (0.031)

0.20 ~ 0.32

우리는 95% 신뢰도로 이 프로그램의 실제 인구 시청률이 20%에서 32% 사이에 있다고 말할 수 있다.

1)

p̂ ± z* (sqrt(p̂(1-p̂) / n))

p̂ = 25/100 = 0.25

z = 2.576

n = 100

 

0.25 ± 2.576 * (sqrt(0.25(1-0.25) / 100))

즉, 0.25 ± 0.137

99% 신뢰수준에서 면역성을 가진 성인의 모비율 p에 대한 신뢰구간은 0.113부터 0.387

 

 

 

2)

z = 2.576

E = 0.01

p̂ = 0.25

 

n = (2.576 / 0.01)^2 * 0.25(1-0.25)

n = 16,711.68

 

최소 16,712명 표본 조사 필요 

* 양측검정

n=81

자유도 n-1=80

신뢰수준이 95%이므로, 양측 검정에서 각각 2.5%의 임계값을 갖는 t-분포를 사용

임계값은 qt(0.025, df=80) = -1.990, qt(0.975, df=80) = 1.990

 

신뢰구간 = 23 ± 1.990 * (32,000 / √81) = 23 ± 7,942

즉, 95% 신뢰수준에서 구매량의 모평균은 23만원을 중심으로 약 ±7,942원의 범위 내에서 존재