본문 바로가기
R

[R] 확률

by 빵으니 2020. 7. 10.
Chap05

확률(Probability)

  • 기술통계 : 시각화와 표본
  • 확률 : 모집단

확률 실험 => 확률 변수 => 확률 분포 => 모수 추론 => 검증 => 의미파악

  • 위 과정을 거처 모집단의 특징을 말하는 것 => 추론
  • 통계학은 모두 조사할 수 없는 모집단을 알기 위해 표본을 설명하면서 발전
  • 최근에는 IT 기술 발전으로 큰데이터를 다룰 수 있어 그 의미가 변해 가고 있음

정해진 확률 구하기

확률 실험

  • 실험으로 나올 수 있는 결과를 모두 알고 있지만 어떤 결과가 나올지 모르는 실험
  • 동전 던지기 앞면 나올 확률
  • 주사위 던지기 2 나올 확률

표본공간

  • 확률실험에서 나올수 있는 결과 집합
  • 동전 : {앞면, 뒷면]
  • 주사위 : {1,2,3,4,5,6}

사건

  • 표본 공간에서 알고 싶은 결과
  • 표본 공간의 부분집합
  • 동전던지기 확률실험에서 '앞면이 나오는 경우'
  • 주사위던지기에서 '홀수가 나오는 경우'

경우의 수

  • 사건이 하나가 아니고 여러 가지 나오는 사건
  • 주사위던지기에서 4미만이 나오는 사건의 확률 = > {1},{2},{3}
실험번호 확률실험 표본공간 모든 경우의 수 사건 사건의 경우의 수 확률
1 동전던지기 {앞면,뒷면} 2 앞면이 나오는 경우 1 1/2
2 주사위던지기 {1,2,3,4,5,6} 6 6이 나오는 경우 1 1/6
3 주사위던지기 {1,2,3,4,5,6} 6 3보다 큰 수가 나오는 경우 3 3/6

확률

  • 확률실험으로 알고 싶은 건 사건이 일어날 확률
  • 확률 = (사건이 일어날 모든 경우의 수) / (표본공간의 모든 경우의 수)

로또 6/45 확률

  • 확률실험 : 1에서 45까지 숫자가 적힌 공을 임의로 6개 뽑는 실험
  • 표본공간 : {1,2,3,4,5,6}, {1,2,3,4,5,7} ....
  • 모든 경우의 수: 8,145,060
  • 사건 : 1부터 45중에서 6개 숫자 뽑음
  • 사건 경우의 수: 1
  • 확률 : 1/8,145,060

사건의 결과는 반드시 표본공간 안에 포함되어 있어야 함

경우의 수 계산하기

n개에서 k개를 고를 경우의 수

  • 순서 허용 여부
  • 중복 허용 여부
종류 순열 조합 중복순열 중복조합
순서 O X O X
중복 X X O O
경우 서로 다른 n개에서 k개를 택하여 일렬로 나열하는 방법의 수 서로 다른 n개에서 k개를 선택 방법의 수 서로 다른 n개에서 중복을 허용하여 k개를 택하여 일렬로 나열하는 방법의 수 서로 다른 n개에서 중복을 허용하여 k개를 선택 방법의 수
3개에서 2개 뽑기 12,13,21,23,31,32 12,13,23 11,12,13,21,22,23,31,32,33 11,12,13,22,23,33
기호 nPk nCk nπk nHk
수학식 n!(n−k)! n!/(n−k)!k! n^k n+k−1Ck
R permutations(3,2) combinations(3,2,data) permutations(3,2,data, repeats.allowed = T) combinations(3,2,data, repeats.allowed = T)
In [2]:
# 패키지 설치
install.packages('gtools')
package 'gtools' successfully unpacked and MD5 sums checked

The downloaded binary packages are in
	C:\Users\205\AppData\Local\Temp\RtmpclS5jH\downloaded_packages
In [3]:
# 라이브러리 부착
library('gtools')
In [4]:
data <- c('1','2','3')
In [5]:
# 순열 - permutations() 순서 상관 O
permutations(3,2,data)
A matrix: 6 × 2 of type chr
12
13
21
23
31
32
In [7]:
# 조합 - combinataions() 순서 상관 X
combinations(3,2,data)
A matrix: 3 × 2 of type chr
12
13
23
In [8]:
# 중복 순열
permutations(3,2,data, repeats.allowed = T)
A matrix: 9 × 2 of type chr
11
12
13
21
22
23
31
32
33
In [9]:
# 중복 조함
combinations(3,2,data, repeats.allowed = T)
A matrix: 6 × 2 of type chr
11
12
13
22
23
33

상대도수의 극한 개념으로 동전던지기 확률 구하기

  • 앞면이 나올 확률이 진짜로 0.5 일까?

실제 확률 실험 결과

실험자 던진 횟수 앞면 상대도수
Buffon 4040 2048 0.5080
Pearson 12000 6019 0.5016
  • 실험결과 이론값과 실험값이 거의 비슷
  • 실험을 많이 할수록 어떤 값으로 수렴

image.png

확률실험과 확률 변수

  • 확률변수는 반드시 숫자 이어야 함
  • 수학적으로 계산하여 의미를 찾아야 하기 때문
  • 확률변수는 이산형(확률질량함수)과 연속형(확률밀도함수)에 따라 달라짐 image.png

체계적인 확률 실험

베르누이 시행

  • 성공/실패, 동전던지기 앞면/뒷면, 합격/불합격
  • 웹시스템에 배너를 10000명에 노출 / 클릭 9명 => 성공/실패 => 클릭 확률 9/10000
  • 결과가 성공/실패로 나타남
  • 다른 사람이 클릭했다고 다른 사람이 클릭 못하는 건 아님
  • 클릭할 확률은 모두가 동일
  • 옆 사람이 클릭하는 것에 영향을 받지 않음

정리

  • 결과는 성공/실패
  • 각 시행 확률은 동일
  • 각 시행은 독립적

베르누이 시행 확률분포

  • 베르누이 시행의 결과를 가지고 할 수 있는 확률분포

이항분포 X~B(n,p)

  • 성공확률이 P인 베르누이 시행을 n번 반복할 때 나타나는 특정 성공횟수 X의 확률에 대한 분포
  • 동전을 20번 던저셔 앞면이 나올 확률 => X~B(20,0.5) => 10번 성공 확률이 제일 높음 => 확률은?

  • 이항분포 평균 = n*p

  • 이항분포 분산 = np(1-p)
In [12]:
# 이항분포확률 함수 - dbinom(x, sizem, prob)
# x: 확률밀도함수값을 얻은 x 벡터 / size: 이항분포 B(n,p)에서 n값을 설정/
# prob: 이항분포 B(n,p)에서 p값을 설정
Bino <- dbinom(0:20, size=20, prob=0.5)
Bino

Bino <- dbinom(10, size=20, prob=0.5)
Bino
  1. 9.5367431640625e-07
  2. 1.9073486328125e-05
  3. 0.000181198120117188
  4. 0.00108718872070313
  5. 0.00462055206298827
  6. 0.0147857666015625
  7. 0.0369644165039063
  8. 0.0739288330078125
  9. 0.120134353637695
  10. 0.160179138183594
  11. 0.176197052001953
  12. 0.160179138183594
  13. 0.120134353637695
  14. 0.0739288330078124
  15. 0.0369644165039063
  16. 0.0147857666015625
  17. 0.00462055206298827
  18. 0.00108718872070313
  19. 0.000181198120117188
  20. 1.9073486328125e-05
  21. 9.5367431640625e-07
0.176197052001953

n,p 변화에 따른 그래프

image.png

기하분포

  • 베르누이 시행에서 처음 성공까지 시도한 횟수 X의 분포
  • 30% 시험관 아기를 성공하는 병원에서 3번만에 성공할 확률?
  • Pr(X=k)=(1−p)^(k−1)*p
In [15]:
# 기하분포확률 함수 - dgeom()
# 어느 병원의 시험관 성공확률 0.3% 
a <- dgeom(1:10, 0.3) # 1번 실패하고 성공 : 10번 실패하고 성공할 확률 / 성공확률은 0.3
a

# 만약 환자가 3번만 시험관을 시도한다면 성공할 확률은 0.147
  1. 0.21
  2. 0.147
  3. 0.1029
  4. 0.07203
  5. 0.050421
  6. 0.0352947
  7. 0.02470629
  8. 0.017294403
  9. 0.0121060821
  10. 0.00847425746999999

연속적인 변수

  • 구간에 대한 확률
  • 히스토그램으로 나타냄
  • 1과 2사이에도 무수히 많은 값이 존재

확률밀도함수

  • 확률 변수의 분포를 나타내는 함수
  • 확률 밀도 함수 f(x) : f(x)와 구간 [a,b] 에 대해서 확률 변수 X 가 구간에 포함될 확률 P(a≤X≤b)

정규분포

  • 평균중심으로 종모양인 본포
  • 종의 중앙이 평균, 종의 퍼짐이 분산
  • X ~ N (μ,σ2)

표준정규분포

  • 정규 그래프중 평균 0, 분산 1인 그래프
  • X ~ N (0, 1) image.png

Z값과 정규분포표 사용

image.png

image.png

중심 극한 정리

  • 모집단이 정규분포를 따르든 따르지 않든 상관없이 동일한 확률분포를 가진 독립 확률 변수 n개의 평균의 분포는 n이 적당히 크다면 정규분포에 가까워진다는 정리

가설검정

귀무가설(영가설) H0

  • 기본적으로는 참으로 추정되며 이를 거부하기 위해서는 증거가 꼭 필요
  • 검증해야 할 가설

대립가설 H1

  • 귀무가설과 반대되는 가설

신뢰구간

  • 구간추정은 모수가 어느 값 a와 어느 값 b사이 구간 내에 몇 %확률로 존재할 것이라고 추정 하는 것
  • 그 확률을 신뢰수준 또는 신뢰도 라고 함
  • 그 추정한 구간을 신뢰구간이라고 함
  • EX) A후보 지지율은 신뢰수준 95%로 신뢰구간 48.7% ~ 53.3% 임
  • 신뢰구간에 포함되지 않을 확률을 α

유의수준

  • 대립가설을 채택하거나 기각할 기준확률 값
  • 보통 5%
  • 앞면이 나오면 A에게 1달러를, 뒷면인 나오면 B에게 1달러를 주는 동전 내기를 A, B가 하기로 했다.
  • 결과는 8회 중 7회 뒷면이 나왔다.
  • A는 동전이 불량이라고 이야기했고, B는 앞면과 뒷면이 나올 확률이 같더라도 우연히 나올 수 있다고했다.
  • 어떻게 반론하면 좋을까?

귀무가설 B의 주장

  • 앞면과 뒷면이 나올 확률이 같다

대립가설 A의 주장

  • 뒷면이 나오기 쉽다

유의 수준 5%

  • 우연이라고 말할 수 없다
  • 이 값보다 작다면 필연적인 이유가 있을 것이다
  • 이 값보다 작아지는 영역을 기각역 이라고 함

B의 확률 분포를 구하고 결과를 확인

In [16]:
# B의 확률분포 계산
Bino <- dbinom(0:8, size=8, prob=0.5)
Bino
  1. 0.00390625
  2. 0.03125
  3. 0.109375
  4. 0.21875
  5. 0.2734375
  6. 0.21875
  7. 0.109375
  8. 0.03125
  9. 0.00390625
In [17]:
# 유의수준 확인 5%
psum <- 0.03125 + 0.00390625
psum
0.03515625
In [19]:
library(ggplot2)
df <- data.frame(x=0:8, prob=dbinom(0:8, size=8, prob=0.5))
ggplot(data=df, aes(x=x, y=prob)) + geom_line()

p값

  • 귀무가설(H0)가 옳다는 가정하에서 대립가설(H1)을 지지하는 방향으로의 확률
  • 대립가설에 유리한 데이터를 얻을 수 있는 확률
  • p값이 유의수준보다 작으면 귀무가설은 기각되고 대립가설이 채택됨
  • 컴퓨터에서 계산이 간단해지면서 많이 쓰이게 됨
  • p값 0.0544 => 5.44%
  • 단측검정 / 양측검정 image.png

R로 확률값 구하기

난수(랜덤) 생성하기 : runif()

In [20]:
# 균일한 난수 -runif
runif(10)
  1. 0.091358324047178
  2. 0.781126338290051
  3. 0.0421213926747441
  4. 0.795693619875237
  5. 0.802448770264164
  6. 0.805156058166176
  7. 0.0204426287673414
  8. 0.949173383880407
  9. 0.0338799848686904
  10. 0.508095180150121
In [21]:
# 0~100 사이 50개 랜덤 수 뽑기
runif(50, min=0, max=100)
  1. 77.1281971829012
  2. 28.1556123867631
  3. 44.2311830352992
  4. 88.3696717442945
  5. 14.8460248252377
  6. 72.3010119050741
  7. 11.3446311093867
  8. 87.7088538138196
  9. 10.0582047831267
  10. 79.8117697704583
  11. 53.9069026941434
  12. 35.3851163992658
  13. 37.3355556512251
  14. 7.92603662703186
  15. 29.6126420609653
  16. 22.7424938697368
  17. 12.8099326975644
  18. 80.561932711862
  19. 18.2595789199695
  20. 22.3027438391
  21. 48.4817513031885
  22. 74.0313967457041
  23. 92.6388434134424
  24. 40.1199019746855
  25. 73.8249317044392
  26. 73.3574106357992
  27. 31.719018612057
  28. 78.5615056520328
  29. 91.7714815819636
  30. 92.3519362695515
  31. 37.0697791455314
  32. 39.1433836426586
  33. 42.6892793970183
  34. 80.1717434544116
  35. 65.6751435017213
  36. 57.8836714848876
  37. 71.6170214582235
  38. 44.6871663443744
  39. 0.201462116092443
  40. 95.0570614309981
  41. 40.654921066016
  42. 12.5329005764797
  43. 0.141050666570663
  44. 50.9926096303388
  45. 35.2690965868533
  46. 1.31326515693218
  47. 33.8463340885937
  48. 29.6526203863323
  49. 48.1255427468568
  50. 67.3542992211878

정규분포를 따르는 난수 - rnorm()

  • 정규분포 N(mean, sd^2)
In [24]:
# 평균 100, 표준편차 15인 난수 10개
rnorm(10, mean=100, sd=15)
  1. 123.04574839376
  2. 94.873254986995
  3. 102.989969261694
  4. 76.4360676665764
  5. 98.1975558074336
  6. 93.2984337103
  7. 109.393335645383
  8. 95.3962574880595
  9. 87.494510647059
  10. 110.643616255187

이항분포 난수 - rbinom()

In [25]:
# 50% 확률로 성공 1이 나오는 난수 100개
rbinom(100, size=1, prob=0.5)
  1. 0
  2. 1
  3. 0
  4. 1
  5. 0
  6. 0
  7. 0
  8. 0
  9. 1
  10. 1
  11. 0
  12. 0
  13. 1
  14. 0
  15. 0
  16. 1
  17. 0
  18. 1
  19. 0
  20. 0
  21. 0
  22. 1
  23. 0
  24. 1
  25. 0
  26. 0
  27. 1
  28. 1
  29. 1
  30. 0
  31. 0
  32. 0
  33. 0
  34. 0
  35. 1
  36. 0
  37. 1
  38. 1
  39. 1
  40. 0
  41. 1
  42. 1
  43. 0
  44. 1
  45. 0
  46. 1
  47. 1
  48. 1
  49. 0
  50. 0
  51. 1
  52. 0
  53. 1
  54. 1
  55. 0
  56. 1
  57. 1
  58. 0
  59. 1
  60. 1
  61. 0
  62. 1
  63. 0
  64. 1
  65. 0
  66. 0
  67. 0
  68. 1
  69. 0
  70. 0
  71. 0
  72. 0
  73. 1
  74. 0
  75. 1
  76. 0
  77. 0
  78. 0
  79. 0
  80. 0
  81. 1
  82. 1
  83. 0
  84. 1
  85. 0
  86. 1
  87. 1
  88. 0
  89. 0
  90. 1
  91. 1
  92. 1
  93. 0
  94. 0
  95. 1
  96. 0
  97. 0
  98. 0
  99. 0
  100. 1
In [26]:
# 1/6 확률로 성공 1이 나오는 난수 100개
rbinom(100, size=1, prob = 1/6)
  1. 0
  2. 1
  3. 0
  4. 1
  5. 0
  6. 1
  7. 0
  8. 0
  9. 0
  10. 0
  11. 1
  12. 0
  13. 0
  14. 0
  15. 0
  16. 0
  17. 0
  18. 0
  19. 0
  20. 0
  21. 0
  22. 0
  23. 0
  24. 0
  25. 0
  26. 0
  27. 1
  28. 0
  29. 0
  30. 0
  31. 1
  32. 0
  33. 0
  34. 1
  35. 0
  36. 0
  37. 0
  38. 0
  39. 1
  40. 0
  41. 0
  42. 0
  43. 0
  44. 1
  45. 0
  46. 1
  47. 1
  48. 0
  49. 0
  50. 0
  51. 0
  52. 1
  53. 1
  54. 0
  55. 0
  56. 1
  57. 0
  58. 0
  59. 0
  60. 0
  61. 0
  62. 0
  63. 0
  64. 0
  65. 0
  66. 0
  67. 0
  68. 1
  69. 0
  70. 0
  71. 0
  72. 0
  73. 0
  74. 0
  75. 0
  76. 0
  77. 0
  78. 0
  79. 0
  80. 0
  81. 0
  82. 0
  83. 0
  84. 0
  85. 0
  86. 0
  87. 0
  88. 0
  89. 0
  90. 0
  91. 0
  92. 0
  93. 0
  94. 1
  95. 0
  96. 0
  97. 0
  98. 0
  99. 0
  100. 1
In [27]:
# 성공/실패 문자로 추출
a <- rbinom(100, size=1, prob=1/6)
a[a==1] <- '성공'
a[a==0] <- '실패'
In [28]:
a
  1. '실패'
  2. '실패'
  3. '실패'
  4. '실패'
  5. '실패'
  6. '실패'
  7. '실패'
  8. '실패'
  9. '실패'
  10. '실패'
  11. '실패'
  12. '실패'
  13. '실패'
  14. '실패'
  15. '성공'
  16. '실패'
  17. '실패'
  18. '실패'
  19. '실패'
  20. '실패'
  21. '실패'
  22. '실패'
  23. '성공'
  24. '실패'
  25. '실패'
  26. '실패'
  27. '실패'
  28. '실패'
  29. '실패'
  30. '실패'
  31. '실패'
  32. '실패'
  33. '성공'
  34. '실패'
  35. '성공'
  36. '실패'
  37. '실패'
  38. '성공'
  39. '성공'
  40. '실패'
  41. '실패'
  42. '실패'
  43. '실패'
  44. '실패'
  45. '실패'
  46. '실패'
  47. '성공'
  48. '실패'
  49. '성공'
  50. '실패'
  51. '성공'
  52. '실패'
  53. '성공'
  54. '실패'
  55. '실패'
  56. '실패'
  57. '성공'
  58. '성공'
  59. '실패'
  60. '실패'
  61. '실패'
  62. '실패'
  63. '실패'
  64. '실패'
  65. '실패'
  66. '실패'
  67. '실패'
  68. '실패'
  69. '실패'
  70. '실패'
  71. '성공'
  72. '성공'
  73. '실패'
  74. '실패'
  75. '실패'
  76. '실패'
  77. '실패'
  78. '실패'
  79. '실패'
  80. '실패'
  81. '실패'
  82. '실패'
  83. '실패'
  84. '실패'
  85. '실패'
  86. '실패'
  87. '실패'
  88. '실패'
  89. '실패'
  90. '실패'
  91. '실패'
  92. '실패'
  93. '실패'
  94. '실패'
  95. '실패'
  96. '실패'
  97. '실패'
  98. '실패'
  99. '실패'
  100. '실패'
In [29]:
length(a[a=='성공'])
14

확률 계산하기

In [30]:
# 정규분포 점확률 
# 평균 30, 표준편차 7인 확률변수 15의 확률 - dnorm()
dnorm(15, mean=30, sd=7)
0.0057372972058433
In [31]:
# 정규분포 점확률 
# 평균 550 표준편차 80인 확률변수 450의 확률 - dnorm()
dnorm(450, mean=550, sd=80)
0.00228311356736277
In [32]:
# 이항분포 점확률
# 동전 1000번 던져 490번이 앞면 나올 확률
dbinom(490, size=1000, prob=0.5)
0.020656351649512
In [33]:
# 이항분포 점확률
# 흡연율 25%로 알려진 1000명이 있는 A대학에서 50명을 뽑았을 때 흡연자일 확률
dbinom(50, size=1000,prob=0.25)
1.51744499043407e-64

구간확률 계산하기 - 확률밀도함수 / 연속변수에 대한 것

In [34]:
# 정규분포 구간확률 
# 평균 240, 표준편차 80 정규분포에서 0~235 까지의 확률
# 면적이 곧 확률
pnorm(235, mean=240, sd=80)
0.475082330970753
In [35]:
# 정규분포 구간확률 
# 평균 350, 표준편차 75 정규분포에서 200~370 까지의 확률
pnorm(370, mean=350, sd=75) - pnorm(200, mean=350, sd=75)
0.582386957587796
In [36]:
# diff() - 구간 한번에 계산
diff(pnorm(c(200,370), mean=350, sd=75))
0.582386957587796

그래프로 확인하기

  • x출 확률변수, y축 확률 값
In [37]:
# 확률 밀도 함수
# 평균 50, 표준편차 5인 정규분포
x <- seq(from = 0, to = 100, by = 1)
head(x)
tail(x)
  1. 0
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  1. 95
  2. 96
  3. 97
  4. 98
  5. 99
  6. 100
In [38]:
# 1~100까지 평균 50, 표준편차 12인 확률 값
y <- dnorm(x, mean=50, sd=12)
head(y)
tail(y)
  1. 5.6469174907348e-06
  2. 7.96343006251161e-06
  3. 1.11525188137404e-05
  4. 1.5510643816312e-05
  5. 2.14225295885255e-05
  6. 2.93829735306205e-05
  1. 2.93829735306205e-05
  2. 2.14225295885255e-05
  3. 1.5510643816312e-05
  4. 1.11525188137404e-05
  5. 7.96343006251161e-06
  6. 5.6469174907348e-06
In [42]:
# plot()
plot(x, y, type='l')
In [43]:
# 확률질량함수
# 100번 베르누이 시행, 단일 확률 50% 이항분포
y <- dbinom(x, size=100, prob=0.5)
head(y)
tail(y)
  1. 7.8886090522101e-31
  2. 7.88860905221007e-29
  3. 3.90486148084405e-27
  4. 1.27558808374239e-25
  5. 3.09330110307526e-24
  6. 5.93913811790449e-23
  1. 5.93913811790444e-23
  2. 3.09330110307526e-24
  3. 1.27558808374239e-25
  4. 3.90486148084405e-27
  5. 7.88860905221007e-29
  6. 7.8886090522101e-31
In [44]:
plot(x, y, type='l')
In [45]:
# 주어진 데이터로 밀도 함수 구하기
data <- rnorm(300, mean=70, sd=20)
In [46]:
# Data 분포를 모른다는 전제하에 밀도함구 구하기 - density()
Ddata <- density(data)
In [47]:
Ddata
Call:
	density.default(x = data)

Data: data (300 obs.);	Bandwidth 'bw' = 5.293

       x                y            
 Min.   :-16.35   Min.   :2.842e-06  
 1st Qu.: 23.54   1st Qu.:3.104e-04  
 Median : 63.43   Median :2.302e-03  
 Mean   : 63.43   Mean   :6.261e-03  
 3rd Qu.:103.33   3rd Qu.:1.212e-02  
 Max.   :143.22   Max.   :2.116e-02  
In [48]:
plot(Ddata)
In [52]:
install.packages('ggthemes')
package 'ggthemes' successfully unpacked and MD5 sums checked

The downloaded binary packages are in
	C:\Users\205\AppData\Local\Temp\RtmpclS5jH\downloaded_packages
In [53]:
# ggplot() - density() 필요 없음
library('ggplot2')
library('ggthemes')
Warning message:
"package 'ggthemes' was built under R version 4.0.2"
In [54]:
data <- rnorm(300, mean=70, sd=20)
df <- data.frame(data)
In [56]:
ggplot(df, aes(x=data)) + 
geom_density(fill='skyblue2', colour='dodgerblue1', alpha=0.4) +
xlim(c(-10, 140)) + theme_wsj()
Warning message:
"Removed 1 rows containing non-finite values (stat_density)."

예제) 토익학원 학습법 가설 검정하기

  • A학원 토익점수 평균 623점, 표준편차 90
  • 자신들만의 새로운 학습법을 적용하면 평균 700점이 넘는 다고 주장
  • 귀무(영)가설 : 토익점수 평균 623점
  • 대립가설 : 평균 700점이상 => 단측 검증
  • 신뢰구간 5% ~ 95%
In [57]:
# 신뢰구간의 확률 변수 값 구하기
ci_data <- qnorm(c(0.05, 0.95), mean=623, sd=90)
ci_data
  1. 474.963173574367
  2. 771.036826425632
In [58]:
# 표본의 데이터 확인
Sample <- read.csv('R-ggagi-data//example_test_statistic_ex1_sample.csv')
In [59]:
head(Sample)
A data.frame: 6 × 2
Xpoint
<int><dbl>
11547.8331
22615.9035
33651.0697
44579.7603
55736.0187
66628.7083
In [63]:
# 모집단의 신뢰구간과 표본의 평균 비교

ci_data 
# 474.963173574367  771.036826425632 -> 신뢰구간 

mean(Sample$point)
# 640.4371984145 -> 귀무가설 기각되지 않음
# 771.036826425632 보다 커야 귀무가설 기각
  1. 474.963173574367
  2. 771.036826425632
640.4371984145

예제) 국어 선생님 학습법 검증하기

  • A고등학교 언어영역 평균 82점
  • 국어 선생님 새로운 학습법 적용 후 평균이 82점이 아니라고 주장
  • 귀무(영)가설 : 언어영역 평균 82점
  • 대립가설 : 언어영역 평균 82점이 아니다 => 양측 검증
  • 신뢰구간 2.5% ~ 97.5%
In [66]:
# 모집단 불러오기
Sample <- read.csv('R-ggagi-data//example_test_statistic_ex2_population.csv')
In [67]:
head(Sample)
A data.frame: 6 × 2
Xpoint
<int><int>
1172
2272
3378
4478
5575
6672
In [68]:
# 평균, 표준편차
mean(Sample$point)
sd(Sample$point)
71.985
4.07197355789778
In [70]:
# 신뢰구간 
# 양측검정
ci_data <- qnorm(c(0.025, 0.875), mean=mean(Sample$point), sd=sd(Sample$point))
ci_data
  1. 64.0040784805209
  2. 76.6691922592352
In [71]:
# 표본 적재 
Sample2 <- read.csv('R-ggagi-data//example_test_statistic_ex2_sample.csv')
In [73]:
head(Sample2)
A data.frame: 6 × 2
Xpoint
<int><int>
1185
2283
3374
4492
5577
6673
In [76]:
# 가설 검증

ci_data
# 64.004078480520976.6691922592352 -> 신뢰구간

mean(Sample2$point)
# 80.845 -> 귀무가설 기각, 대립가설 채택 (실제로는 타당성 조사 필요)
  1. 64.0040784805209
  2. 76.6691922592352
80.845
In [ ]:

'R' 카테고리의 다른 글

[R] 회귀분석  (0) 2020.07.13
[R] 확률 실전예제--------주피터파일---------  (0) 2020.07.13
[R] D3js 와 js를 활용한 시각화  (0) 2020.07.09
[R] R 필수 패키지 설치 및 기초  (0) 2020.07.08
[R] 데이터 시각화 및 EDA  (0) 2020.07.08

댓글