제3부분: 균일치를 바탕으로 한 샘플의 가설 검사

20194 단어 pythondatascience
년 우리는 가설 검증의 개념과 이런 도구를 사용하는 서로 다른 요소에 대한 완전한 묘사를 소개했다.이것은 메모지로 끝나서 테스트의 데이터 형식에 따라 사용할 테스트를 선택할 수 있습니다.
비례에 기반한 샘플에 대해 z테스트를 어떻게 실행하는지 개술한 코드 샘플들
이 글은 현재 균일치에 기초한 견본을 상세하게 소개할 것이다.

If any of the terms – Null Hypothesis, Alternative Hypothesis, p-value – are new to you, then before carrying on with this one.


무엇이 균일치에 기초한 견본입니까?
이런 상황에서 우리가 흥미를 느끼는 것은 일부 견본의 산술 평균치를 검사하는 것이다.이것은 샘플의 평균치가 어떤 예상치와 일치하는지 검사하거나 두 개의 서로 다른 그룹에서 온 두 샘플을 비교하거나 같은 그룹에서 온 두 샘플을 비교하여 관여 전후에 진행할 수 있다.

샘플 품질에 대한 요구
이러한 시험의 경우 다음과 같은 샘플링 규칙이 필요합니다.
랜덤이었어
샘플은 반드시 전체 인원에서 온 무작위 샘플이어야 한다
정상이었어
샘플의 예상치는 반드시 충분해야 한다. 이 테스트에 대해 좋은 경험법은 샘플의 양을 정하는 것이다. 변수마다 예상 계수는 적어도 5이어야 한다.
예를 들어 한 네트워크의 크기가 5%의 실시간 데이터와 95%의 전력을 다해 메시지를 전달한다고 가정하면 이것은 우리가 예상한 주파수이다.
샘플의 양이 50이라는 것은 우리가 이 샘플에 약 2.5개의 실시간 데이터 메시지가 있을 것으로 예상한다는 것을 의미한다. 이것은 5개보다 작기 때문에 샘플이 크지 않기 때문에 거절당할 것이다.
인디펜던트
샘플은 반드시 독립적이어야 한다. 이러한 테스트에 대해 좋은 경험법은 샘플의 양이 전체 인구의 10퍼센트보다 적다는 것이다.

f기 샘플의 테스트
this git repository에서 모든 코드 예시를 제공합니다. 이 코드들은 공공 statsmodels 라이브러리를 사용하여 테스트를 수행합니다.

샘플 t 검사

Compare the proportion in a sample to an expected value


여기에 우리는 평균치로 정의된 a가 하나 있는데, 우리는 기본인구의 전체 평균치가 어느 예상 평균치보다 크거나 작거나 같지 않다고 단언할 수 있는지 보고 싶다.
따라서 이 예에서 우리가 호출 센터에 대해 샘플을 추출하여 평균 호출 시간이 2분을 초과했는지 검사하고자 한다고 가정한다.
  • 우리의 무효 가설은 평균 통화 시간이 2분이라는 것이다.
  • 우리의 또 다른 가설은 평균 통화 시간이 2분을 넘는다는 것이다.
  • 우리는 한 그룹에서 500개의 전화 샘플을 추출했는데 평균 통화 시간은 122초이고 표준 차이는 73초
  • 인 것을 발견했다.
  • 우리는 샘플 t검사를 사용하여 샘플이 무효 가설을 받아들이거나 거부할 수 있는지 검사한다
  • Python에서 p 값을 계산하려면 다음과 같이 하십시오.
    from scipy.stats import truncnorm
    from statsmodels.stats.weightstats import DescrStatsW as stats
    # can we assume anything from our sample?
    significance = 0.025
    # we're checking if calls can be resolved in over 2 minutes
    # so Ho == 120 seconds
    null_hypothesis = 120
    # Normally, in the real world, you would process an entire sample (i.e. sample_a)
    # But for this test, we'll generate a sample from this shape, wherE:
    # - min/max is the range of available options
    # - sample mean/dev are used to define the normal distribution
    # - size is how large the sample will be
    min, max, sample_mean_a, sample_dev_a, sample_size_a = (0, 300, 121, 50, 500)
    ########################
    # here - for our test - we're generating a random string of durations to be our sample
    # these are in a normal distribution between min/max, normalised around the mean
    sample_a = truncnorm(
      (min - sample_mean_a) / sample_dev_a,
      (max - sample_mean_a) / sample_dev_a,
      loc=sample_mean_a,
      scale=sample_dev_a).rvs(sample_size_a)
    # Get the stat data
    (t_stat, p_value, degree_of_freedom) = stats(sample_a).ttest_mean(null_hypothesis, 'larger')
    # report
    print('t_stat: %0.3f, p_value: %0.3f' % (t_stat, p_value))
    if p_value > significance:
      print("Fail to reject the null hypothesis - we have nothing else to say")
    else:
      print("Reject the null hypothesis - suggest the alternative hypothesis is true")
    

    두 샘플 독립 t 검사

    Compare the mean of the samples from 2 different populations


    여기서 우리는 두 가지 견본이 있다. 두 개의 서로 다른 집단에서 얻은 것이다. 평균수로 정의된 것이다. 우리는 한 기본 집단의 전체 평균수가 다른 집단보다 크거나 작거나 다르다고 단언할 수 있는지를 보고 싶다.
    그래서 이 예에서 우리는 두 개의 서로 다른 호출 센터를 비교하고 그들의 호출 시간이 어떻게 서로 관련되어 있는지 보려고 한다.
  • 우리는 두 가지 견본이 있다. A와 B: 우리의 무효 가설은 두 그룹의 평균치가 같다는 것이다.
  • 우리의 또 다른 가설은 전체 A의 평균치 > 전체 B의 평균치이다
  • 우리는 한 그룹에서 500개의 전화 샘플을 추출했는데 평균 통화 시간은 121초이고 표준 차이는 56초인 것을 발견했다.
  • 우리는 다른 사람들 중에서 500개의 전화 샘플을 추출했는데 평균 통화 시간은 125초이고 표준 차이는 16초
  • 인 것을 발견하였다.
  • 우리는 두 샘플의 독립 t검사를 사용하여 샘플이 무효 가설을 받아들이거나 거부할 수 있는지 검사한다
  • Python에서 p 값을 계산하려면 다음과 같이 하십시오.
    from scipy.stats import truncnorm
    from statsmodels.stats.weightstats import ttest_ind
    # can we assume anything from our sample?
    significance = 0.025
    # we're checking if calls can be resolved in over 2 minutes
    # so Ho == 120 seconds
    null_hypothesis = 120
    # Normally, in the real world, you would process an entire sample (i.e. sample_a)
    # But for this test, we'll generate a sample from this shape, wherE:
    # - min/max is the range of available options
    # - sample mean/dev are used to define the normal distribution
    # - size is how large the sample will be
    min, max = (0, 300)
    sample_mean_v1, sample_dev_v1, sample_size_v1 = (121, 56, 500)
    sample_mean_v2, sample_dev_v2, sample_size_v2 = (125, 16, 500)
    ########################
    # here - for our test - we're generating a random string of durations to be our sample
    # these are in a normal distribution between min/max, normalised around the mean
    sample_v1 = truncnorm(
    (min - sample_mean_v1) / sample_dev_v1,
    (max - sample_mean_v1) / sample_dev_v1,
    loc=sample_mean_v1,
    scale=sample_dev_v1).rvs(sample_size_v1)
    sample_v2 = truncnorm(
    (min - sample_mean_v2) / sample_dev_v2,
    (max - sample_mean_v2) / sample_dev_v2,
    loc=sample_mean_v2,
    scale=sample_dev_v2).rvs(sample_size_v2)
    # Get the stat data
    # note that we're comparing V2 to V1 - so the sample we expect to be larger goes first here
    (t_stat, p_value, degree_of_freedom) = ttest_ind(sample_v2, sample_v1, alternative='larger')
    # report
    print('t_stat: %0.3f, p_value: %0.3f' % (t_stat, p_value))
    if p_value > significance:
     print("Fail to reject the null hypothesis - we have nothing else to say")
    else:
     print("Reject the null hypothesis - suggest the alternative hypothesis is true")
    

    더블 샘플 배합 t 검사

    Compare the mean of two samples from the same population


    여기서 우리는 두 개의 견본이 있다. 같은 사람들로부터 얻은 것이다. 평균치로 정의된 것이다. 우리는 두 번째 견본에서 기초인들의 평균치가 첫 번째 견본의 평균치보다 크거나 작거나 같지 않다고 단언할 수 있는지 보고 싶다.
    그래서 이 예에서 우리가 코드 변경을 했다고 가정하면 속도가 느려진 것 같아서 변경 전후의 성능을 샘플링하여 속도가 정말 느려졌는지 보려고 한다.
  • 우리는 두 가지 견본이 있다. A와 B: 우리의 무효 가설은 두 그룹의 평균치가 같다는 것이다.
  • 우리의 또 다른 가설은 전체 A의 평균치 > 전체 B의 평균치이다
  • 바뀌기 전에 우리는 사람들 중에서 500개의 사건을 표본으로 추출했는데 평균 처리 시간은 121밀리초이고 표준 편차는 56밀리초인 것을 발견했다.
  • 변경된 후에 우리는 사람들 중에서 500개의 사건을 표본으로 추출한 결과 평균 처리 시간은 128밀리초이고 표준 편차는 16밀리초인 것을 발견했다.
  • 우리는 두 샘플을 t검사에 맞추어 샘플이 무효 가설을 받아들이거나 거부할 수 있는지 검사한다
  • 주: 이 경우 같은 요소가 여러 번 샘플링되었다고 가정합니다.따라서 이것은 실제적으로 두 견본 간의 차이에 대한 단일 견본 t검측이다.
  • 잘못된 가정: 차이 0
  • 대체 가정: 차이가 0보다 크다
  • Python에서 p 값을 계산하려면 다음과 같이 하십시오.
    from scipy.stats import truncnorm
    from statsmodels.stats.weightstats import DescrStatsW as stats
    # can we assume anything from our sample?
    significance = 0.05
    # we're checking if calls can be resolved in over 2 minutes
    # so Ho == 120 seconds
    null_hypothesis = 120
    # Normally, in the real world, you would process an entire sample (i.e. sample_a)
    # But for this test, we'll generate a sample from this shape, wherE:
    # - min/max is the range of available options
    # - sample mean/dev are used to define the normal distribution
    # - size is how large the sample will be
    min, max = (0, 300)
    sample_mean_v1, sample_dev_v1, sample_size_v1 = (121, 56, 500)
    sample_mean_v2, sample_dev_v2, sample_size_v2 = (125, 16, 500)
    ########################
    # here - for our test - we're generating a random string of durations to be our sample
    # these are in a normal distribution between min/max, normalised around the mean
    sample_v1 = truncnorm(
     (min - sample_mean_v1) / sample_dev_v1,
     (max - sample_mean_v1) / sample_dev_v1,
     loc=sample_mean_v1,
     scale=sample_dev_v1).rvs(sample_size_v1)
    sample_v2 = truncnorm(
     (min - sample_mean_v2) / sample_dev_v2,
     (max - sample_mean_v2) / sample_dev_v2,
     loc=sample_mean_v2,
     scale=sample_dev_v2).rvs(sample_size_v2)
    # Get the stat data
    # note that this is, in effect, a sample t-test on the differences
    # we want to see if v2 is slower than V1 so we get the differences and check the probability that they
    # are larger than the null hypothesis here (of the default = 0.0)
    (t_stat, p_value, degree_of_freedom) = stats(sample_v2 - sample_v1).ttest_mean(alternative='larger')
    # report
    print('t_stat: %0.5f, p_value: %0.5f' % (t_stat, p_value))
    if p_value > significance:
      print("Fail to reject the null hypothesis - we have nothing else to say")
    else:
      print("Reject the null hypothesis - suggest the alternative hypothesis is true")
    
    다음 글에서 나는 주파수를 바탕으로 하는 샘플 테스트를 중점적으로 소개할 것이다.
  • 첫 번째 섹션:
  • 섹션 2:
  • 섹션 4:
  • 좋은 웹페이지 즐겨찾기