1

정규 분포 N (2, 1)을 [-1, 5]파이썬 - [-1, 5] 간격으로 이론 정규 분포 N (2, 1)을 계산하고 플롯합니다.

의 간격은 여기에 내가 무엇을 시도했다 : 당신이 알아 낸다시피

vec = np.random.norm(2, 1, 7); 
ND = stats.norm(2, 1).pdf(vec) 
x = np.arange(1, 6, 1) 
plt.figure() 
plt.plot(x, 'r') 
plt.hist(ND) 
plt.show() 

이 나에게 내가 찾고 결과를 제공하지 않습니다.

나는 이것을 이해할 수 없다. 저는 최근에 파이썬으로 코딩을 시작한 학생입니다.

나는 -1에서 5까지의 np.random.normal으로 난수를 생성하라는 요청을 받았습니다. 그러나 간격이 -1에서 시작된다는 것을 고려하면 어떻게 할 수 있는지 아직 이해하지 못했습니다.

이 두 번째로 내가 scipy.stats에서 함수 norm.pdf를 사용하는 요청을받은하지만이 기능에 대한 문서를 이해하지 못하는

(https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.norm.html)

마지막으로 나는 결과를 플롯합니다.

도움을 주시면 감사하겠습니다. 제 무능함을 용서해주십시오 ...

+2

에 오신 것을 환영합니다. 불행히도 이것은 토론 포럼이나 튜토리얼 서비스가 아닙니다. 시간을내어 [ask]와 그 페이지의 다른 링크를 읽으십시오. – wwii

+0

@wwii이 문제에 대해 저를 도울 포럼을 제안 하시겠습니까? – AlexT

+0

새로운 도구를 사용하려고 할 때 매뉴얼을 시작하는 것이 좋습니다. 문서를 가지고 잠시 시간을 투자하여 실험을 진행하십시오. – wwii

답변

1

N (2,1) 분포를 지정하는 것은 평균 2와 분산 (또는 표준 편차) 1을 갖는 정규 분포를 원한다는 의미입니다. scipy 용어에서 mean은 다음과 같습니다. 위치 및 표준 편차를 측정합니다.

matplotlib를 사용하여 pdf의 플롯을 만들려면 [-1, 5] 간격으로 충분한 점을 선택하여 시각적으로 부드러운 그래프를 만듭니다. 이것이 linspace의 목적입니다. 이 점들 각각에 대해 norm.pdf을 사용하여 pdf를 계산합니다. 여기

from scipy.stats import norm 
from matplotlib import pyplot as plt 
import numpy as np 

x = np.linspace(-1, 5, 100, endpoint=True) 
pdf = [norm.pdf(_, loc=2, scale=1) for _ in x] 

plt.plot(x, pdf, 'b-') 
plt.show() 

나는 크기 10. 내가 norm.rvs 전체 실제 라인을 통해 벗어날를 생성합니다 알고의 샘플을 만들; 따라서 원하는 간격에 대한 편차를 얻으려면 해당 간격 밖에있는 것들은 무시하십시오. `norm.rvs '의 각 호출은 길이가 1 인 numpy'배열 '을 생성합니다. 좋은 결과를 얻으려면 해당 배열의 첫 번째 항목을 선택하고 전체 샘플에 추가합니다 (원하는 간격 내에있는 경우).

sample_size = 10 
sample = [] 
while len(sample)<sample_size: 
    while True: 
     deviate = norm.rvs(loc=2, scale=1, size=1)[0] 
     if -1<=deviate<=5: 
      break 
    sample.append(deviate) 
print (sample)