Python에서 SciPy를 사용하여 경험적 분포를 이론적인 분포에 어떻게 맞출 수 있나요?

Mary-Kate Olsen
풀어 주다: 2024-11-24 09:58:11
원래의
237명이 탐색했습니다.

How Can I Fit an Empirical Distribution to a Theoretical One Using SciPy in Python?

Scipy(Python)를 사용하여 실증적 분포를 이론적인 분포에 맞추기

통계에서는 다음을 적용해야 하는 경우가 많습니다. 관찰된 데이터에서 얻은 경험적 분포를 데이터를 가장 잘 설명하는 이론적 분포로 변환합니다. 이를 통해 확률 계산 및 기타 통계적 추론이 가능합니다.

Python(Scipy)의 구현

Scipy는 데이터에 적용할 수 있는 다양한 분포 함수를 제공합니다. . 가장 적합한 분포를 찾기 위해 데이터의 히스토그램과 피팅된 분포의 히스토그램 간의 오차 제곱합(SSE)을 최소화하기 위해 최소 제곱법이 자주 사용됩니다.

import numpy as np
import scipy.stats as st

# Data points
data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# Candidate theoretical distributions
distributions = ['norm', 'beta', 'gamma']

# Iterate over distributions and find best fit
best_dist = None
lowest_sse = float('inf')
for dist_name in distributions:
    dist = getattr(st, dist_name)

    # Fit distribution to data
    params = dist.fit(data)

    # Evaluate SSE
    sse = np.sum((np.histogram(data, bins=10, density=True)[0] - dist.pdf(np.linspace(0, 10, 100), *params))**2)

    # Update best distribution if lower SSE found
    if sse < lowest_sse:
        lowest_sse = sse
        best_dist = dist

# Calculate p-value for a given value
value = 5
p_value = best_dist.cdf(value)
로그인 후 복사

< h2>예

위의 예에서 데이터의 경험적 분포는 세 가지 다른 이론적 분포에 맞춰집니다. 분포(정규, 베타, 감마). 감마 분포는 SSE가 가장 낮으므로 가장 적합합니다. 그런 다음 값 5에 대한 p-값은 5에서 평가된 감마 분포의 누적 분포 함수로 계산됩니다.

위 내용은 Python에서 SciPy를 사용하여 경험적 분포를 이론적인 분포에 어떻게 맞출 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿