2017-03-07 2 views
-1

Ich habe ein Original Beispieldaten und seine simulierten Daten (fragen Sie mich nicht, wie ich simuliert habe), und ich möchte überprüfen, ob Histogramme übereinstimmen. Der beste Weg ist also qqplot aber statsmodels Bibliothek erlaubt keine Proben mit unterschiedlicher Größe.Wie erstellt man ein qq-Plot zwischen zwei Samples unterschiedlicher Größe in Python?

+0

Willkommen bei Stack-Überlauf. Fragen wie diese, die nach einem Startpunkt fragen, passen nicht gut in das Stack Overflow-Format. Fügen Sie einige Details zu dem, was Sie versucht haben, einschließlich Codebeispielen, hinzu. Und geben Sie das Problem an, mit dem Sie gerade konfrontiert werden. [Hier klicken] (https://stackoverflow.com/help/how-to-ask) für weitere Tipps, wie Sie anderen helfen können. – benrifkah

Antwort

2

Bei der Konstruktion eines qq-Plots werden entsprechende Quantile in beiden Sätzen gefunden und gegeneinander aufgetragen. In dem Fall, in dem eine Menge größer ist als die andere, ist es gängige Praxis, die Quantileniveaus der kleineren Menge zu nehmen und lineare Interpolation zu verwenden, um die entsprechenden Quantile in der größeren Menge zu schätzen. Dies wird hier beschrieben: http://www.itl.nist.gov/div898/handbook/eda/section3/qqplot.htm

Dies ist relativ einfach manuell zu tun:

import numpy as np 
import pylab 

test1 = np.random.normal(0, 1, 1000) 
test2 = np.random.normal(0, 1, 800) 

#Calculate quantiles 
test1.sort() 
quantile_levels1 = np.arange(len(test1),dtype=float)/len(test1) 

test2.sort() 
quantile_levels2 = np.arange(len(test2),dtype=float)/len(test2) 

#Use the smaller set of quantile levels to create the plot 
quantile_levels = quantile_levels2 

#We already have the set of quantiles for the smaller data set 
quantiles2 = test2 

#We find the set of quantiles for the larger data set using linear interpolation 
quantiles1 = np.interp(quantile_levels,quantile_levels1,test1) 

#Plot the quantiles to create the qq plot 
pylab.plot(quantiles1,quantiles2) 

#Add a reference line 
maxval = max(test1[-1],test2[-1]) 
minval = min(test1[0],test2[0]) 
pylab.plot([minval,maxval],[minval,maxval],'k-') 

pylab.show() 
Verwandte Themen