ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 확률
    R 2020. 7. 13. 17:45

    확률(Probability)

    • 기술통계 : 시각화와 표본

    • 확률 : 모집단

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

    • 위 과정을 거처 모집단의 특징을 말하는 것 => 추론

    • 통계학은 모두 조사할 수 없는 모집단을 알기 위해 표본을 설명하면서 발전

    • 최근에는 IT 기술 발전으로 큰데이터를 다룰 수 있어 그 의미가 변해가고 있음

    정해진 확률 구하기

    확률실험

    • 실험으로 나올 수 있는 결과를 모두 알고 있지만 어떤 결과가 나올지 모르는 실험

    • 동전 던지기 앞면 나올 확률

    • 주사위 던지기 2 나올 확률

     

    표본 공간

    • 확률실험에서 나올 수 있는 결과 집합

    • 동전 : {앞면, 뒷면}

    • 주사위 : {1, 2, 3, 4, 5, 6}

     

    사건

    • 표본 공간에서 알고 싶은 결과

    • 표본 공간의 부분집합

    • 동전던지기 확률실험에서 '앞면이 나오는 경우'

    • 주사위던지기에서 '홀수가 나오는 경우'

     

    경우의 수

    • 사건이 하나가 아니고 여러 가지 나오는 사건

    • 주사위던지기에서 4미만이 나오는 사건의 확률 => {1}, {2}, {3}

    확률

    • 확률실험으로 알고 싶은 건 사건이 일어날 확률

    • 확률 = (사건이 일어날 모든 경우의 수) / (표본공간의 모든 공간의 수)

     

    로또 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개를 고를 경우의 수

    • 순서 허용 여부

    • 중복 허용 여부

    • 우리는 공식으로 계산할게 아니라 이론 내용과 함수 사용법을 익히면 됨 :)

    install.packages('gtools')
    package 'gtools' successfully unpacked and MD5 sums checked
    
    The downloaded binary packages are in
        C:\Users\205\AppData\Local\Temp\RtmpuiDWXy\downloaded_packages
    library(gtools)
    data <- c('1', '2', '3')
    permutations(3, 2, data)
     
    1 2
    1 3
    2 1
    2 3
    3 1
    3 2
    combinations(3, 2, data)
     
    1 2
    1 3
    2 3
    permutations(3, 2, data, repeats.allowed = T)
     
    1 1
    1 2
    1 3
    2 1
    2 2
    2 3
    3 1
    3 2
    3 3
    combinations(3, 2, data, repeats.allowed = T)
     
    1 1
    1 2
    1 3
    2 2
    2 3
    3 3

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

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

    실제 확률 실험 결과

    • 실험결과 이론값과 실험값이 거의 비슷

    • 실험을 많이 할수록 어떤 값으로 수렴

    출처: https://bookdown.org/mathemedicine/Stat_book/probability-vs-likelihood.html

    확률실험과 확률변수

    • 확률변수는 반드시 숫자 이어야 함

    • 수학적으로 계산하여 의미를 찾아야 하기 때문

    • 확률변수는 이산형(확률질량함수)과 연속형(확률밀도함수)에 따라 달라짐

    체계적인 확률실험

    베르누이 시행

    • 성공/실패, 동전던지기 앞면/뒷면, 합격/불합격

    • 웹시스템에 배너를 10000명에 노출 / 클릭 9명 => 성공/실패 => 클릭 확률 9/10000

    • 결과가 성공/실패로 나타남

    • 다른 사람이 클릭했다고 다른 사람이 클릭 못하는 건 아님

    • 모두에게 클릭할 확률은 동일

    • 옆 사람이 클릭하는 것에 영향을 받지 않음

     

    정리

    • 결과는 성공/실패

    • 각 시행 확률은 동일

    • 각 시행은 독립적

     

    베르누이 시행 확률분포

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

     

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

    • 성공확률이 P인 베르누이 시행을 n번 반복할 때 나타나는 특정 성공횟수 X의 확률에 대한 분포

    • 동전을 20번 던저셔 앞면이 나올 확률 => X~B(20,0.5) => 10번 성공 확률이 제일 높음 => 확률은?

    • 이항분포 평균 = n*p

    • 이항분포 분산 = np(1-p)

    Bino <- dbinom(0:20, size=20, prob=0.5) # prop :  확률
    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 변화에 따른 그래프

    기하분포

    • 베르누이 시행에서 처음 성공까지 시도한 횟수 X의 분포

    • 30% 시험관 아기를 성공하는 병원에서 3번만에 성공할 확률?

    # 0.3 시험관 성공(1번하면 0.3, 2번했을때 성공하면 0.21 ....)
    a <- dgeom(1:10, 0.3) # 0.147
    a
    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)

    Z값과 정규분포표 사용

     

    중심 극한 정리

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

    가설검정

    귀무가설(영가설) H0

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

    • 검증해야 할 가설

     

    대립가설 H1

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

     

    신뢰구간

    • 구간추정은 모수가 어느 값 a와 어느 값 b사이 구간 내에 몇 %확률로 존재할 것이라고 추정 하는 것

    • 그 확률을 신뢰수준 또는 신뢰도 라고 함

    • 그 추정한 구간을 신뢰구간이라고 함

    • EX) A후보 지지율은 신뢰수준 95%로 신뢰구간 48.7% ~ 53.3% 임

    • 신뢰구간에 포함되지 않을 확률을 α

     

    유의수준

    • 대립가설을 채택하거나 기각할 기준확률 값

    • 보통 5%

    귀무가설 B의 주장(기존에 참인 가설)

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

     

    대립가설 A의 주장(대립되는 가설)

    • 뒷면이 나오기 쉽다

     

    유의수준 5%

    • 우연이라고 말할 수 없다

    • 이 값보다 작다면 필연적인 이유가 있을 것이다

    • 이 값보다 작아지는 영역을 기각역 이라고 함

     

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

    # 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
    # 유의수준 확인 5%
    psum <- 0.03125 + 0.00390625
    psum

    0.03515625

    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%

    R로 확률값 구하기

    난수(랜덤) 생성하기

    # 균일한 난수 - runif()
    runif(10)
    1. 0.885389418108389
    2. 0.0779970991425216
    3. 0.842031814623624
    4. 0.381347123300657
    5. 0.103793505812064
    6. 0.936883620452136
    7. 0.228023673174903
    8. 0.15278900670819
    9. 0.0791909319814295
    10. 0.130721268709749
    # 0~100 사이 50개
    runif(50, min=0, max=100)
    1. 84.7111913375556
    2. 10.934574296698
    3. 0.819327007047832
    4. 40.9031876828521
    5. 44.1820338368416
    6. 27.6619726559147
    7. 15.2416101424024
    8. 83.3246093709022
    9. 30.1515947794542
    10. 28.0001347418875
    11. 63.8598932884634
    12. 23.6258530989289
    13. 73.1331901857629
    14. 96.7019350500777
    15. 84.4377777539194
    16. 34.0797122567892
    17. 48.0505653191358
    18. 31.253151036799
    19. 82.8346077352762
    20. 22.2118839155883
    21. 56.3061837106943
    22. 16.5427040075883
    23. 13.0825237603858
    24. 3.77818765118718
    25. 27.5441631441936
    26. 16.2683324422687
    27. 77.6525264373049
    28. 60.7823750237003
    29. 54.5926111051813
    30. 55.6182157946751
    31. 7.710673334077
    32. 37.5652708113194
    33. 17.2977520385757
    34. 11.0488927690312
    35. 33.5975539404899
    36. 8.3340069744736
    37. 90.9841798013076
    38. 53.8030865136534
    39. 73.0076543986797
    40. 22.2787553677335
    41. 44.2986285779625
    42. 73.4532510163262
    43. 36.8159991223365
    44. 53.8750059669837
    45. 7.64563616830856
    46. 53.3883557422087
    47. 38.4875930147246
    48. 95.2575927134603
    49. 80.6527501204982
    50. 67.8329832153395
    # 정규분포 N(mean, sd^2)
    # 정규분포를 따르는 난수 - rnorm()
    # 평균 100, 표준편차 15인 난수 10개
    rnorm(10, mean=100, sd=15)
    1. 110.421015062279
    2. 99.0540335091025
    3. 116.228539227009
    4. 93.8478999042707
    5. 102.228999169667
    6. 104.560970411563
    7. 106.811554008347
    8. 107.824362544417
    9. 89.9106778931394
    10. 91.476555235027
    # 이항분포 난수 - rbinom()
    # 50% 확률로 성공 1 나오는 난수 100개
    rbinom(100, size=1, prob=0.5)
    1. 0
    2. 0
    3. 0
    4. 0
    5. 1
    6. 0
    7. 0
    8. 0
    9. 1
    10. 1
    11. 0
    12. 0
    13. 1
    14. 0
    15. 0
    16. 1
    17. 1
    18. 1
    19. 0
    20. 0
    21. 0
    22. 0
    23. 0
    24. 1
    25. 1
    26. 0
    27. 0
    28. 0
    29. 1
    30. 1
    31. 1
    32. 1
    33. 1
    34. 0
    35. 1
    36. 0
    37. 0
    38. 0
    39. 0
    40. 0
    41. 1
    42. 1
    43. 0
    44. 1
    45. 0
    46. 1
    47. 1
    48. 0
    49. 0
    50. 1
    51. 1
    52. 0
    53. 1
    54. 0
    55. 0
    56. 0
    57. 1
    58. 1
    59. 1
    60. 1
    61. 0
    62. 1
    63. 1
    64. 1
    65. 0
    66. 0
    67. 0
    68. 0
    69. 0
    70. 0
    71. 0
    72. 0
    73. 0
    74. 0
    75. 0
    76. 0
    77. 1
    78. 0
    79. 1
    80. 0
    81. 0
    82. 0
    83. 1
    84. 1
    85. 0
    86. 1
    87. 0
    88. 0
    89. 0
    90. 0
    91. 1
    92. 0
    93. 1
    94. 1
    95. 0
    96. 1
    97. 0
    98. 1
    99. 0
    100. 1
    # 1/6 확률로 성공 1 나오는 난수 100
    rbinom(100, size = 1, prob = 1/6)
    1. 0
    2. 0
    3. 0
    4. 1
    5. 0
    6. 0
    7. 0
    8. 1
    9. 0
    10. 1
    11. 0
    12. 1
    13. 0
    14. 0
    15. 0
    16. 0
    17. 0
    18. 1
    19. 0
    20. 0
    21. 1
    22. 0
    23. 0
    24. 0
    25. 0
    26. 1
    27. 0
    28. 0
    29. 0
    30. 0
    31. 1
    32. 0
    33. 0
    34. 0
    35. 0
    36. 0
    37. 0
    38. 0
    39. 0
    40. 0
    41. 0
    42. 0
    43. 0
    44. 0
    45. 1
    46. 1
    47. 0
    48. 0
    49. 1
    50. 0
    51. 0
    52. 0
    53. 0
    54. 0
    55. 0
    56. 0
    57. 0
    58. 0
    59. 0
    60. 0
    61. 1
    62. 0
    63. 0
    64. 0
    65. 0
    66. 0
    67. 0
    68. 0
    69. 0
    70. 0
    71. 0
    72. 0
    73. 0
    74. 0
    75. 0
    76. 0
    77. 0
    78. 0
    79. 0
    80. 1
    81. 0
    82. 0
    83. 0
    84. 1
    85. 1
    86. 0
    87. 0
    88. 0
    89. 1
    90. 0
    91. 0
    92. 1
    93. 0
    94. 0
    95. 0
    96. 0
    97. 0
    98. 0
    99. 0
    100. 0
    # 성공 / 실패 문자로 추출
    a <- rbinom(100, size = 1, prob = 1/6)
    a[a==1] <- '성공'
    a[a==0] <- '실패'
    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. '실패'

    확률 계산하기

    # 정규분포 확률 - 평균(mean) 30, 표준편차(sd) 7, 확률변수 15의 확률 - dnorm()
    dnorm(15, mean=30, sd=7)

    0.0057372972058433

    # 정규분포 확률 - 평균(mean) 550, 표준편차(sd) 80, 확률변수 450의 확률 - dnorm()
    dnorm(450, mean = 550, sd = 80)

    0.00228311356736277

    # 이항분포 확률 - 동전 1000번 던저 490번이 앞면 나올 확률
    dbinom(490, size = 1000, prob = 0.5)

    0.020656351649512

    # 이항분포 확률 - 흡연율 25%로 알려진 1000명이 있는 A대학에서 50명을 뽑았을 때 흡연자일 확률
    dbinom(50, size = 1000, prob = 0.25)

    1.51744499043407e-64


    구간확률 계산하기 - 확률밀도함수

    # 정규분포 구간확률 - 평균(mean)240, 표준편차(sd)80, 정규분포에서 0~235 까지의 확률
    pnorm(235, mean=240, sd=80)

    0.475082330970753

    # 정규분포 구간확률 - 평균(mean)350, 표준편차(sd)75, 정규분포에서 200~370 까지의 확률
    pnorm(370, mean=350, sd=75) - pnorm(200, mean=350, sd=75)

    0.582386957587796

    # diff() - 구간 한번에 계산
    diff(pnorm(c(200,370), mean = 350, sd = 75))

    0.582386957587796


    그래프로 확인 하기

    • x 축 확률 변수, y축 확률 값

    # 확률 밀도 함수
    # 평균(mean)50, 표준편차(sd)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
    # 1부터 100까지 평균(mean)50, 표준편차(sd)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
    # plot()
    plot(x, y, type='l')

    # 확률 질량 함수
    # 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
    plot(x, y, type='l')

    # 주어진 데이터로 밀도 함수 구하기 
    data <- rnorm(300, mean = 70, sd = 20)
    # Data분포를 모른다고 전제, 밀도함수 구하기 - density()
    Ddata <- density(data)
    Ddata
    Call:
        density.default(x = data)
    
    Data: data (300 obs.);    Bandwidth 'bw' = 6.014
    
           x                y            
     Min.   :-33.42   Min.   :2.488e-06  
     1st Qu.: 10.45   1st Qu.:1.675e-04  
     Median : 54.33   Median :2.365e-03  
     Mean   : 54.33   Mean   :5.693e-03  
     3rd Qu.: 98.20   3rd Qu.:1.128e-02  
     Max.   :142.07   Max.   :1.906e-02  
    plot(Ddata)

    # ggplot() - density() 필요없음
    library('ggplot2')
    library('ggthemes')
    Warning message:
    "package 'ggthemes' was built under R version 4.0.2"
    data <- rnorm(300, mean = 70, sd = 20)
    df <- data.frame(data)
    ggplot(df, aes(x = data)) + 
    geom_density(fill = 'skyblue2', colour = 'dodgerblue1', alpha = 0.4) + 
    xlim(c(-10, 140)) + 
    theme_wsj()


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

    • A학원 토익점수 평균 623점, 표준편차 90

    • 자신들만의 새로운 학습법을 적용하면 평균 700점이 넘는 다고 주장

    • 귀무(영)가설 : 토익점수 평균 623점

    • 대립가설 : 평균 700점이상 => 단측 검증

    • 신뢰구간 5% ~ 95%

    # 신뢰구간의 확률 변수 값 구하기
    ci_data <- qnorm(c(0.05, 0.95), mean = 623, sd = 90)
    ci_data
    1. 474.963173574367
    2. 771.036826425632
    # 표본의 데이터 확인
    Sample <- read.csv('r-ggagi-data/example_test_statistic_ex1_sample.csv')
    head(Sample)
     
      X point
      <int> <dbl>
    1 1 547.8331
    2 2 615.9035
    3 3 651.0697
    4 4 579.7603
    5 5 736.0187
    6 6 628.7083
    # 모집단의 신뢰구간과 표본의 평균 비교
    ci_data #771.036826425632
    mean(Sample$point) # 640.4371984145 => 귀무가설 기각되지 않음
    1. 474.963173574367
    2. 771.036826425632

    640.4371984145


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

    • A고등학교 언어영역 평균 82점
    • 국어 선생님 새로운 학습법 적용 후 평균이 82점이 아니라고 주장
    • 귀무(영)가설 : 언어영역 평균 82점
    • 대립가설 : 언어영역 평균 82점이 아니다 => 양측 검증
    • 신뢰구간 2.5% ~ 97.5%
    # 모집단 불러오기
    Population <- read.csv('r-ggagi-data/example_test_statistic_ex2_population.csv')
    head(Population)
    A data.frame: 6 × 2
      X point
      <int> <int>
    1 1 72
    2 2 72
    3 3 78
    4 4 78
    5 5 75
    6 6 72
    # 평균, 표준편차
    mean(Population$point)
    sd(Population$point)

    71.985

    4.07197355789778

    ci_data <- qnorm(c(0.025, 0.975), mean = mean(Population$point), sd = sd(Population$point))
    ci_data
    1. 64.0040784805209
    2. 79.9659215194791
    # 표본 적재
    Sample <- read.csv('r-ggagi-data/example_test_statistic_ex2_sample.csv')
    head(Sample)
    A data.frame: 6 × 2
      X point
      <int> <int>
    1 1 85
    2 2 83
    3 3 74
    4 4 92
    5 5 77
    6 6 73
    # 가설 검증
    ci_data # 64.0040784805209 | 79.9659215194791
    mean(Sample$point) # 80.845 => 귀무가설 기각하고 대립가설을 채택 But 실제는 타당성 조사 필요
    1. 64.0040784805209
    2. 79.9659215194791

    80.845

     

    Chap05.html
    1.20MB

    'R' 카테고리의 다른 글

    회귀분석  (0) 2020.07.13
    확률 - 예제  (0) 2020.07.13
    시각화 - D3.js  (0) 2020.07.09
    시각화 - 예제  (0) 2020.07.09
    시각화  (0) 2020.07.07
Designed by Tistory.