파이썬을 사용하여 "다중 모드"로그 정규 분포를 데이터에 피팅

user1912925

실험실에서 기기를 사용하여 측정 한 다음 데이터가 있습니다. 기기는 직경을 기준으로 서로 다른 크기의 입자를 빈에 수집하므로 측정은 기본적으로 "바인딩"됩니다.

import numpy as np
import matplotlib.pylab as plt
from lmfit import models

y = np.array([196, 486, 968, 2262, 3321, 4203, 15072, 46789, 95201, 303494, 421484, 327507, 138931, 27973])
bins = np.array([0.0150, 0.0306, 0.0548, 0.0944, 0.1540, 0.2560, 0.3830, 0.6050, 0.9510, 1.6400, 2.4800, 3.6700, 5.3800, 9.9100, 15])

bin_width=np.diff(bins)
x_plot = np.add(bins[:-1],np.divide(bin_width,2))
x=x_plot
y=y

여기에 이미지 설명 입력

여기에 플로팅하면 데이터가 어떻게 보이는지 나타납니다. x 스케일 단위로 0.1 정도의 모드와 2 정도의 모드가 있습니다.

이 연구 영역 내에서 이러한 데이터에 "다중 모드"로그 정규 분포를 맞추는 것이 일반적입니다.이를 감안할 때 LMFIT를 사용하여 모드를 약 2에 맞추 었습니다.

model = models.LognormalModel()
params = model.make_params(center=1.5, sigma=0.6, amplitude=2214337)

result = model.fit(y, params, x=x)
print(result.fit_report())

plt.plot(x, y, label='data')
plt.plot(x, result.best_fit, label='fit')
plt.xscale("log")
plt.yscale("log")
plt.legend()
plt.show()

여기에 이미지 설명 입력

예상대로 이것은 2 주변의 두 번째 모드에 적합한 결과를 가져옵니다. 내 질문은 0.1 주변의 두 번째 모드를 어떻게 맞출 것인가입니다 (본질적으로 두 모드의 합이 데이터에 적합해야 함)? 세 가지 모드가 더 좋을 것이라고 주장 할 수도 있지만 두 가지 모드를 사용하는 방법을 이해하면 세 번째 모드를 추가하는 것은 사소한 일이라고 가정합니다.

M 뉴빌

lmfit.Models 다음과 같이 함께 추가 할 수 있습니다.

model = (models.LognormalModel(prefix='p1_') +
         models.LognormalModel(prefix='p2_') +
         models.LognormalModel(prefix='p3_') )

params = model.make_params(p1_center=0.3, p1_sigma=0.2, p1_amplitude=1e4,
                           p2_center=1.0, p2_sigma=0.4, p2_amplitude=1e6,
                           p3_center=1.5, p3_sigma=0.6, p3_amplitude=2e7)

복합 모델에서 모델의 각 구성 요소는 매개 변수 이름 앞에 추가되는 자체 "접두어"(모든 문자열)를 갖습니다. 다음에 맞는 모델 구성 요소의 사전을 얻을 수 있습니다.

components = result.eval_components()
# {'p1_': Array, 'p2_': Array, 'p3_': Array}
for compname, comp in components.keys():
    plt.plot(x, comp, label=compname)

세미 로그 또는 로그 로그 플롯에 표시 할 데이터를 피팅하려면 모델을에 피팅하는 것을 고려할 수 있습니다 log(y). 그렇지 않으면 적합도가 매우 낮은 값에서 부적합에 대해 민감하지 않습니다 y.

참고 lmfit모델과 매개 변수가 범위를 지원합니다. 다음과 같은 경계를 배치해야하거나 찾을 수 있습니다.

params['p1_amplitude'].min = 0
params['p1_sigma'].min = 0
params['p1_center'].max = 0.5
params['p3_center'].min = 1.0

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

정규식 파이썬을 사용하여`| 태그에 오류가`으로 구분

분류에서Dev

튜플을 사용하여 파이썬 목록 이해 필터링 (정수를 문자열로 포함)

분류에서Dev

정수 배열이 다중 모드이고 모드가 없으면 모드를 찾기위한 Java 메소드가 실패합니다.

분류에서Dev

다중 모드 함수를 정의하는 Python

분류에서Dev

python matplotlib를 사용하여 정규 분포에 대한 히스토그램을 어떻게 그리나요?

분류에서Dev

특정 모수를 사용하여 R의 정규 분포 플로팅

분류에서Dev

R을 사용하여 "다봉"로그 정규 분포 피팅

분류에서Dev

파이썬을 사용하여 둘 이상의 텍스트 파일에서 데이터 플로팅

분류에서Dev

파이썬을 사용하여 둘 이상의 텍스트 파일에서 데이터 플로팅

분류에서Dev

정규식을 사용하여이 로그 데이터에서 데이터를 추출하지 못하는 이유는 무엇입니까?

분류에서Dev

정규식을 사용하여 데이터를 구문 분석하고이를 튜플로 변환

분류에서Dev

Dymola에서 다중 모드 DAE를 사용할 때 발생하는 오류

분류에서Dev

정규식을 사용하여 2 또는 3 청크로 숫자 분할 (파이썬)

분류에서Dev

Matplotlib에서 사전을 사용하여 레이블이 지정된 데이터를 어떻게 플로팅합니까? (파이썬)

분류에서Dev

histfit을 사용하여 정규 분포를 피팅 할 때 Bin 가장자리 지정

분류에서Dev

파이썬 : 정규식을 사용하여 로그 파일에서 날짜 시간 읽기

분류에서Dev

Laravel 4 정규식을 사용하여 created_at 데이터베이스 필드에서 월과 날짜를 별도로 타겟팅

분류에서Dev

파이썬에서 정규식을 사용하여 HTML 태그 일치

분류에서Dev

관측 된 데이터에 확률 분포 피팅하기 C ++

분류에서Dev

파이썬을 사용하여 정규식으로 대문자를 출력하는 방법

분류에서Dev

R 데이터 세트를 사용하여 정규 분포도 만들기

분류에서Dev

정규식을 사용하여 파일에서 데이터를 추출하고 목록에 저장하여 사전으로 컴파일합니다.

분류에서Dev

스크래피와 함께 파이썬을 사용하여 여러 웹 페이지 크롤링 된 데이터를 csv 파일로 출력하는 방법

분류에서Dev

R의 rasterVis를 사용하여 스택의 각 레이어에 특정 포인트 데이터 플로팅

분류에서Dev

파이썬에서 정규식을 사용하여 ","로 문자열을 분할하는 방법

분류에서Dev

파이썬과 re 모듈을 사용하여 대괄호와 점으로 분할하는 정규식

분류에서Dev

Python에서 비닝 된 로그 정규 데이터 피팅

분류에서Dev

정규식을 사용하여 여러 줄의 데이터를 표시하도록 로그 파일 구문 분석

분류에서Dev

파이썬에서 정규식을 사용하여 태그 제거

Related 관련 기사

  1. 1

    정규식 파이썬을 사용하여`| 태그에 오류가`으로 구분

  2. 2

    튜플을 사용하여 파이썬 목록 이해 필터링 (정수를 문자열로 포함)

  3. 3

    정수 배열이 다중 모드이고 모드가 없으면 모드를 찾기위한 Java 메소드가 실패합니다.

  4. 4

    다중 모드 함수를 정의하는 Python

  5. 5

    python matplotlib를 사용하여 정규 분포에 대한 히스토그램을 어떻게 그리나요?

  6. 6

    특정 모수를 사용하여 R의 정규 분포 플로팅

  7. 7

    R을 사용하여 "다봉"로그 정규 분포 피팅

  8. 8

    파이썬을 사용하여 둘 이상의 텍스트 파일에서 데이터 플로팅

  9. 9

    파이썬을 사용하여 둘 이상의 텍스트 파일에서 데이터 플로팅

  10. 10

    정규식을 사용하여이 로그 데이터에서 데이터를 추출하지 못하는 이유는 무엇입니까?

  11. 11

    정규식을 사용하여 데이터를 구문 분석하고이를 튜플로 변환

  12. 12

    Dymola에서 다중 모드 DAE를 사용할 때 발생하는 오류

  13. 13

    정규식을 사용하여 2 또는 3 청크로 숫자 분할 (파이썬)

  14. 14

    Matplotlib에서 사전을 사용하여 레이블이 지정된 데이터를 어떻게 플로팅합니까? (파이썬)

  15. 15

    histfit을 사용하여 정규 분포를 피팅 할 때 Bin 가장자리 지정

  16. 16

    파이썬 : 정규식을 사용하여 로그 파일에서 날짜 시간 읽기

  17. 17

    Laravel 4 정규식을 사용하여 created_at 데이터베이스 필드에서 월과 날짜를 별도로 타겟팅

  18. 18

    파이썬에서 정규식을 사용하여 HTML 태그 일치

  19. 19

    관측 된 데이터에 확률 분포 피팅하기 C ++

  20. 20

    파이썬을 사용하여 정규식으로 대문자를 출력하는 방법

  21. 21

    R 데이터 세트를 사용하여 정규 분포도 만들기

  22. 22

    정규식을 사용하여 파일에서 데이터를 추출하고 목록에 저장하여 사전으로 컴파일합니다.

  23. 23

    스크래피와 함께 파이썬을 사용하여 여러 웹 페이지 크롤링 된 데이터를 csv 파일로 출력하는 방법

  24. 24

    R의 rasterVis를 사용하여 스택의 각 레이어에 특정 포인트 데이터 플로팅

  25. 25

    파이썬에서 정규식을 사용하여 ","로 문자열을 분할하는 방법

  26. 26

    파이썬과 re 모듈을 사용하여 대괄호와 점으로 분할하는 정규식

  27. 27

    Python에서 비닝 된 로그 정규 데이터 피팅

  28. 28

    정규식을 사용하여 여러 줄의 데이터를 표시하도록 로그 파일 구문 분석

  29. 29

    파이썬에서 정규식을 사용하여 태그 제거

뜨겁다태그

보관