2017-11-25 1 views
-1

정규 분포의 그림 3 개를 표시하려하지만 좋은 수치 (영국) 만 얻고 있습니다. 나머지 두 개 (미국과 일본)는 불완전한 정상 곡선을 가지고 있습니다.여러 개의 그림을 만들 때 적합 분포가 잘리지 않습니다.

커브를 히스토그램에 맞추어 각 그림에 2 개의 그래프, 즉 히스토그램과 가우스 분포가 있어야한다고 말할 수 있습니다.

내 코드의 일부를 살펴보고이를 해결하는 방법을 알려주십시오. 나는 제안에 감사한다, 고마워.

내하기 matplotlib 수치 : fitted distribution, fitted distribution,

for item in totalIPs: 
    USA=totalIPs[18] 
    JAPAN=totalIPs[10] 
    UK=totalIPs[17] 
    AUSTRALIA=totalIPs[0] 

#print(USA) 
#print(JAPAN) 
#print(UK) 
#print(AUSTRALIA) 
#print('done') 

#print(country) 
#print(ipFirmnames) 
#print(totalIPs) 
#print("done")  

#Calculating mean and standard deviation 
#from sublists in country list of lists 
#i could write a function for this but dont know how 

mu_USA=statistics.mean(USA) 
mu_JAPAN=statistics.mean(JAPAN) 
mu_UK=statistics.mean(UK) 

std_USA=statistics.stdev(USA) 
std_JAPAN=statistics.stdev(JAPAN) 
std_UK=statistics.stdev(UK) 

plt.figure(1) 
plt.hist(USA, bins=10, normed=True, alpha=0.6, color='g') 

plt.figure(2) 
plt.hist(JAPAN,bins=10,normed=True,alpha=0.6, color ='g') 

plt.figure(3) 
plt.hist(UK, bins=10,normed=True, alpha=0.6, color = 'g') 

standardize_USA=(np.array(USA)-mu_USA)/std_USA 
standardize_JAPAN=(np.array(JAPAN)-mu_JAPAN)/std_JAPAN 
standardize_UK=(np.array(UK)-mu_UK)/std_UK 

xmin, xmax = plt.xlim() 

x1=np.linspace(xmin, xmax, 100) 
x2=np.linspace(xmin, xmax, 100) 
x3=np.linspace(xmin, xmax, 100) 

fitted_pdf_USA=ss.norm.pdf(x1,mu_USA, std_USA) 
fitted_pdf_JAPAN=ss.norm.pdf(x3,mu_JAPAN, std_JAPAN) 
fitted_pdf_UK=ss.norm.pdf(x3,mu_UK, std_UK) 

plt.figure(1) 
plt.plot(x1, fitted_pdf_USA, 'K', linewidth=2) 

plt.figure(2) 
plt.plot(x2, fitted_pdf_JAPAN,'K', linewidth=2) 
fitted_pdf_JAPAN=ss.norm.pdf(x2,mu_JAPAN, std_JAPAN) 


plt.figure(3) 
plt.plot(x3, fitted_pdf_UK,'K', linewidth=2) 

#plt.show() 
print(standardize_USA) 
print(standardize_JAPAN) 

#print(USA) 
print(UK) 
print(JAPAN) 
+1

처음에는 내 편에서의 제안 만합니다. 도움이 필요한 문제의 [mcve]를 제공하십시오. – ImportanceOfBeingErnest

+0

조언 해 주셔서 감사합니다. 저는 Python과 Stackoverflow에 익숙하지 않기 때문에 컨벤션에 익숙하지 않습니다. 나는 다음 번에 그것을 명심 할 것이다. 그건 그렇고 내 플롯에서 문제를 일으키는 원인에 대한 생각은 뭐니? – MyWrathAcademia

+0

실제로 도움이 필요할지라도 우리가 원하는 것을 이해하기 어렵고 제공해야합니다. [PyMC] (http://docs.pymc.io/notebooks/LKJ.html)에는 시작하는 데 도움이되는 몇 가지 샘플 코드가 있습니다. 알려진 프레임 워크와 단계별 노트북을 사용하면 우리를 도울 수 있습니다. –

답변

0

fitted distribution 당신은 곡선에 대한 제한이 부분

xmin, xmax = plt.xlim() 

만들기 개인에 단 하나의 곡선으로부터 얻을 수 있다는 것입니다 문제 그래프 한도가 아닌 각 데이터에서 모든 플롯에 대한 제한을 설정하면 문제가 해결됩니다. numpy에서 max()min()을 사용하여 사용하십시오.

x1=np.linspace(USA.min(),USA.max(),100) 

각각의 데이터가있는 모든 플롯에 대해이를 수행하십시오. 이 방법은 매끄러운 커브를 제공하지만 한계는 그래프가 아니라 데이터입니다. 너무 작 으면 곱하기 (1.1*max()) 또는 합계 (max()+10; min은 데이터에 따라 다름)를 통해 제한을 늘리십시오.

+0

정말 흥미 롭습니다. 나는 잘못을 알아 내려고 노력하면서 나이를 먹었으므로 당신이 옳기를 바랍니다. 그렇다면 대신에 값을 사용해야하는 한계를 사용하는 대신 분을합니까? 나는 당신의 코드를 보길 고대한다. – MyWrathAcademia

+0

@mywrathacademia 그래, 모든 세트의 최대 값과 최소값을 사용하면 효과가있다. 그러나 주석에서 지적한 바와 같이,이 예제는 문제를 재현하기에 충분하지 않으며, 판은 더 나은 질문을하는 것이 좋습니다. – Guto

+0

그리고 일했습니다. 구토, 고맙다. 문제를 발견 한 방식이 인상적이었다. 지금 당신이 제안한대로 데이터를 각각의 데이터로 사용하고 있습니다. 커브는 매우 노이즈이기 때문에 sort 함수를 사용해야했습니다. 실제 데이터에 비해 xmin 및 xmax 제한을 사용할 때 데이터 세트 중 하나에 대해 더 부드러운 곡선이 나타납니다. 왜 그런지 아십니까? – MyWrathAcademia

관련 문제