[PYTHON] 피팅 분배, 적합성, p- 값. Scipy (Python)로이 작업을 수행 할 수 있습니까?
PYTHON피팅 분배, 적합성, p- 값. Scipy (Python)로이 작업을 수행 할 수 있습니까?
소개 : 저는 생물 정보 학자입니다. 모든 인간 유전자 (약 2 000)에 대해 수행 한 필자의 분석에서 특정 모티프가 각 유전자에서 얼마나 많이 발생했는지를 확인하기위한 특정 짧은 서열 모티프를 찾는다.
유전자는 4 개의 문자 (A, T, G, C)의 선형 순서로 '기록'됩니다. 예 : CGTAGGGGGTTTAC ... 이것은 각 세포의 비밀 언어와 같은 유전 암호의 4 글자 알파벳입니다. DNA가 실제로 정보를 저장하는 방법입니다.
특정 유전자에서 특정 짧은 모티프 서열 (AGTGGAC)을 빈번히 반복하는 것이 세포의 특정 생화학 적 과정에서 결정적이라고 생각합니다. 모티프 자체가 매우 짧기 때문에 전산 도구로 유전자의 실제 기능적 예와 우연히 유사하게 보이는 것을 구별하기가 어렵습니다. 이 문제를 피하기 위해 모든 유전자의 서열을 얻은 다음 단일 문자열로 연결하고 섞습니다. 원래 유전자의 길이가 저장되었습니다. 그런 다음 원본 시퀀스 길이 각각에 대해 연결된 시퀀스에서 A 또는 T 또는 G 또는 C를 무작위로 반복적으로 선택하여 임의 시퀀스로 전송하여 임의 시퀀스를 구성했습니다. 이러한 방식으로, 무작위 시퀀스의 결과 세트는 전체 길이, A, T, G, C 전체 길이 분포가 동일합니다. 그런 다음이 무작위 순서로 모티프를 찾습니다. 나는이 과정을 1000 번 반복했고 결과를 평균했다.
주어진 모티프를 포함하지 않는 15000 개의 유전자 모티프 1 개를 포함하는 5000 개의 유전자 2 개의 모티프를 포함하는 3000 개의 유전자 3 개의 모티프를 포함하는 1000 개의 유전자 ... 6 개의 모티프를 포함하는 1 유전자
따라서 실제 유전자 코드를 1000 배 무작위로 추출한 후에도 6 개 이상의 모티프를 가진 유전자는 없습니다. 그러나 진정한 유전자 코드에는 모티프의 20 번 이상을 포함하는 몇 가지 유전자가 있습니다.이 반복은 기능적 일 수 있으며 순수한 기회로 그러한 풍부함에서 찾을 수 없을 것입니다.
문제: 나는 유전자를 발견 할 확률을 알고 싶다. 나는 20 개의 분포를 모티브로한다. 그래서 우연히 그러한 유전자를 발견 할 확률을 알고 싶습니다. 이것을 파이썬으로 구현하고 싶습니다만, 어떻게해야할지 모르겠습니다.
파이썬에서 그런 분석을 할 수 있습니까?
어떤 도움을 주시면 감사하겠습니다.
해결법
-
==============================
1.SciPy 문서에는 구현 된 모든 연속 분포 함수의 목록이 있습니다. 각각에는 해당 모양 매개 변수를 반환하는 fit () 메서드가 있습니다.
SciPy 문서에는 구현 된 모든 연속 분포 함수의 목록이 있습니다. 각각에는 해당 모양 매개 변수를 반환하는 fit () 메서드가 있습니다.
어떤 배포판을 사용할지 모를지라도 아래의 코드처럼 데이터에 더 잘 맞는 배포판을 동시에 선택할 수 있습니다. 배포판에 대해 잘 모른다면 샘플을 맞추기 어려울 수 있습니다.
import matplotlib.pyplot as plt import scipy import scipy.stats size = 20000 x = scipy.arange(size) # creating the dummy sample (using beta distribution) y = scipy.int_(scipy.round_(scipy.stats.beta.rvs(6,2,size=size)*47)) # creating the histogram h = plt.hist(y, bins=range(48)) dist_names = ['alpha', 'beta', 'arcsine', 'weibull_min', 'weibull_max', 'rayleigh'] for dist_name in dist_names: dist = getattr(scipy.stats, dist_name) param = dist.fit(y) pdf_fitted = dist.pdf(x, *param[:-2], loc=param[-2], scale=param[-1]) * size plt.plot(pdf_fitted, label=dist_name) plt.xlim(0,47) plt.legend(loc='upper left') plt.show()
참고 문헌 :
- Scipy로 배포 피팅
- Scipy (Python)를 사용하여 경험적 분포를 이론적으로 피팅하는 방법?
from https://stackoverflow.com/questions/6615489/fitting-distributions-goodness-of-fit-p-value-is-it-possible-to-do-this-with by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] TensorFlow 모델 복원 (0) | 2018.10.24 |
---|---|
[PYTHON] SimpleGUI를 Python 2.7 및 3.0 셸과 통합하는 방법 (0) | 2018.10.24 |
[PYTHON] 모든 이중 밑줄 변수 목록 찾기? (0) | 2018.10.24 |
[PYTHON] ISO 8601 datetime 문자열을 Python datetime 객체로 변환하려면 어떻게해야합니까? [복제] (0) | 2018.10.24 |
[PYTHON] 파이썬 요청 모듈에 헤더 추가하기 (0) | 2018.10.24 |