Signal- und Messdatenverarbeitung


Verteilungsfunktionen ohne Gewichtung

Python Matlab/Octave
Vorbereitung (Laden von Modulen/Paketen)
from numpy import *
from numpy.random import *
from matplotlib.pyplot import *
%Octave: pkg load statistics
%Matlab: erfordert die Statistics and Machine Learning Toolbox
Generieren von N Werten xi mit i=0N1 einer stetigen Verteilung (normalverteilte Zufallsgröße als Beispiel, mit dem Erwartungswert μ=3 und der Standardabweichung σ=1)
N=100
mu=3
sigma=1
x=normal(mu,sigma,N)
plot(x,'o')
show()
N=100;
mu=3;
sigma=1;
x=normrnd(mu,sigma,[1,N]);
plot(x,'o')
Generieren von N Werten xi mit i=0N1 einer diskreten Verteilung (Poisson-verteilte Zufallsgröße als Beispiel, mit der Intensität λ=3)
N=100
Lambda=3
x=poisson(Lambda,N)
plot(x,'o')
show()
N=100;
lambda=3;
x=poissrnd(lambda,[1,N]);
plot(x,'o')
Generieren von K gleichmäßig verteilten Werten ξk mit k=0K1 der Klassengrenzen
K=20
xi=0.5*arange(0,K)-2
plot(xi,'o')
show()
K=20;
xi=0.5*(0:K-1)-2;
plot(xi,'o')
Generieren von K ungleichmäßig verteilten Werten ξk mit k=0K1 der Klassengrenzen
K=20
xi=0.5*(1+arange(0,K)/float(5))**2-3
plot(xi,'o')
show()
K=20;
xi=0.5*(1+(0:K-1)/5).^2-3;
plot(xi,'o')
Kumulative Verteilungsfunktion (linksseitige Stetigkeit, sowohl stetige als auch diskrete Verteilungen)
F=zeros(len(xi))
for i in range(0,len(xi)):
  F[i]=sum(x<xi[i])

F/=float(len(x))
plot(xi,F,'o')
show()

oder

#Bei histogram() werden jeweils Werte gleich der unteren Intevallgrenze mitgezählt.
#Im letzten Intervall werden dann aber Werte beider Intervallgrenzen gezählt.
#Unterhalb des ersten Abfragewertes werden keine Werte gezählt.
#Deshalb werden ein Intervall von -∞ bis zur ersten Intervallgrenze und ein Intervall ab der letzten Intervallgrenze bis +∞ ergänzt.
F=cumsum(histogram(x,bins=append(append(-inf,xi),inf))[0][0:len(xi)])/float(len(x))
plot(xi,F,'o')
show()
F=zeros(1,length(xi));
for i=1:length(xi)
F(i)=sum(x<xi(i));
end
F=F/length(x);
plot(xi,F,'o')

oder

%Bei histc() werden jeweils Werte gleich der unteren Intevallgrenze mitgezählt.
%Unterhalb des ersten Abfragewertes werden keine Werte gezählt.
%Deshalb wird ein Intervall von -∞ bis zur ersten Intervallgrenze ergänzt.
F=cumsum(histc(x,[-inf,xi]))/length(x);
F=F(1:end-1);
plot(xi,F,'o')
Kumulative Verteilungsfunktion (rechtsseitige Stetigkeit, sowohl stetige als auch diskrete Verteilungen)
F=zeros(len(xi))
for i in range(0,len(xi)):
  F[i]=sum(x<=xi[i])

F/=float(len(x))
plot(xi,F,'o')
show()

oder

#Für rechtsseitige Stetigkeit werden alle Werte und Intervallgrenzen invertiert und ihre Reihenfolge umgekehrt.
#Hier hilft dann, dass von histogram() Werte gleich der unteren Intevallgrenzen mitgezählt werden.
#Es muss dann nur noch ein Intervall zur Unterscheidung der Werte bis zur letzten Intervallgrenze und oberhalb der letzten Intervallgrenze ergänzt werden.
F=cumsum(flip(histogram(-x,bins=flip(-append(-inf,xi)))[0]))/float(len(x))
plot(xi,F,'o')
show()
F=zeros(1,length(xi));
for i=1:length(xi)
F(i)=sum(x<=xi(i));
end
F=F/length(x);
plot(xi,F,'o')

oder

%Für rechtsseitige Stetigkeit werden alle Werte und Intervallgrenzen invertiert und ihre Reihenfolge umgekehrt.
%Auch hier muss ein Intervall ergänzt werden, um alle Werte vor der ersten Intervallgrenze mitzuzählen.
F=cumsum(flip(histc(-x,flip(-[-inf,xi]))))/length(x);
F=F(2:end);
plot(xi,F,'o')
Wahrscheinlichkeitsfunktion (nur für diskrete Verteilungen)
xi=arange(0,11)
#Bei histogram() werden im letzten Intervall Werte beider Intervallgrenzen gezählt.
#Deshalb wird der letzte Abfragewert noch ein zweites Mal eingetragen, um die Werte am letzten und am vorletzten Abfragewert zu trennen.
P=histogram(x,bins=append(xi,xi[-1]))[0]/float(len(x))
plot(xi,P,'o')
show()
xi=(0:10);
P=histc(x,xi)/length(x);
plot(xi,P,'o')
Wahrscheinlichkeitsdichtefunktion (nur für stetige Verteilungen)
K=len(xi)
f=histogram(x,bins=xi)[0][0:K-1]/float(len(x))/(xi[1:K]-xi[0:K-1])
step(xi,append(0,f))
show()
f=histc(x,xi)/length(x);
f=f(1:length(xi)-1);
f=f./reshape(xi(2:length(xi))-xi(1:length(xi)-1),size(f));
stairs(xi,[f,0])