|
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 Werten mit einer
stetigen Verteilung (normalverteilte Zufallsgröße als Beispiel, mit dem Erwartungswert und der Standardabweichung ) mit einer vom Wert abhängigen Annahmewahrscheinlichkeit (verschobene Sigmoidfunktion als Beispiel) |
N=100
mu=3
sigma=1
x=zeros(N)
for i in range(0,N):
x[i]=normal(mu,sigma)
while random()>1/(1+exp(-(x[i]-mu))):
x[i]=normal(mu,sigma)
plot(x,'o')
show()
|
N=100;
mu=3;
sigma=1;
x=zeros(1,N);
for i=1:N
x(i)=normrnd(mu,sigma);
while rand>1/(1+exp(-(x(i)-mu)))
x(i)=normrnd(mu,sigma);
end
end
plot(x,'o')
|
Generieren von Gewichten mit , passend zu den mit mit invertierter Annahmewahrscheinlichkeit (verschobene Sigmoidfunktion) |
g=1+exp(-(x-mu))
plot(g,'o')
show()
|
g=1+exp(-(x-mu));
plot(g,'o')
|
Generieren von Werten mit einer diskreten Verteilung (Poisson-verteilte Zufallsgröße als Beispiel, mit der Intensität ) mit einer vom Wert abhängigen Annahmewahrscheinlichkeit (abnehmende Exponentialfunktion als Beispiel) |
N=100
Lambda=3
x=poisson(Lambda,N)
x=zeros(N)
for i in range(0,N):
x[i]=poisson(Lambda)
while random()>exp(-x[i]/3.0):
x[i]=poisson(Lambda)
plot(x,'o')
show()
|
N=100;
lambda=3;
x=zeros(1,N);
for i=1:N
x(i)=poissrnd(lambda);
while rand>exp(-x(i)/3)
x(i)=poissrnd(lambda);
end
end
plot(x,'o')
|
Generieren von Gewichten mit , passend zu den mit mit invertierter Annahmewahrscheinlichkeit (abnehmende Exponentialfunktion) |
g=exp(x/3.0)
plot(g,'o')
show()
|
g=exp(x/3);
plot(g,'o')
|
Generieren von gleichmäßig verteilten Werten mit 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 ungleichmäßig verteilten Werten mit 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 (sowohl stetige als auch diskrete Verteilungen) |
linksseitige Stetigkeit:
F=zeros(len(xi))
for i in range(0,len(xi)):
F[i]=sum((x<xi[i])*g)
F/=float(sum(g))
plot(xi,F,'o')
show()
rechtsseitige Stetigkeit:
F=zeros(len(xi))
for i in range(0,len(xi)):
F[i]=sum((x<=xi[i])*g)
F/=float(sum(g))
plot(xi,F,'o')
show()
|
linksseitige Stetigkeit:
F=zeros(1,length(xi));
for i=1:length(xi)
F(i)=sum((x<xi(i)).*g);
end
F=F/sum(g);
plot(xi,F,'o')
rechtsseitige Stetigkeit:
F=zeros(1,length(xi));
for i=1:length(xi)
F(i)=sum((x<=xi(i)).*g);
end
F=F/sum(g);
plot(xi,F,'o')
|
Wahrscheinlichkeitsfunktion (nur für diskrete Verteilungen) |
xi=arange(0,11)
#Bei histogram() werden im letzten Intervall alle Werte auch hinter dem letzten Abfragewert mitgezählt.
#Deshalb wird der letzte Abfragewert noch ein zweites Mal eingetragen, um die Werte genau am letzten Abfragewert und die darüber zu trennen.
P=histogram(x,bins=append(xi,xi[len(xi)-1]),weights=g)[0]/float(sum(g))
plot(xi,P,'o')
show()
|
xi=(0:10);
P=zeros(1,length(xi));
for i=1:length(xi)
P(i)=sum((x==xi(i)).*g);
end
P=P/sum(g);
plot(xi,P,'o')
|
Wahrscheinlichkeitsdichtefunktion (nur für stetige Verteilungen) |
K=len(xi)
f=histogram(x,bins=xi,weights=g)[0][0:K-1]/float(sum(g))/(xi[1:K]-xi[0:K-1])
step(xi,append(0,f))
show()
|
f=zeros(1,length(xi));
for i=2:length(xi)
f(i)=sum((x<xi(i)).*(x>xi(i-1)).*g);
end
f=f(2:length(xi))/sum(g)./(xi(2:K)-xi(1:K-1));
stairs(xi,[f,0])
|