######################################
Brownuv pohyb (Wieneruv proces), Brownuv most
######################################
library(sde)

Y=BM(x=0,t0=0,T=1,N=10000)
plot(Y)

Y=BBridge(x=0,t0=0,T=1,N=10000)
plot(Y)

#######################################
Kolmogorovuv-Smirnovuv test: odhadnuty model x znamy model za platnosti H0
#######################################
opak=10000 #pocet simulaci
n=1000     #rozsah vyberu  
lambda=1

zam1=0
zam2=0
zam3=0
T1=rep(0,opak)
T2=rep(0,opak)
T3=rep(0,opak)

for (i in 1:opak){
x=rexp(n,lambda)     #data
y=rexp(n,lambda)     #nezavisla data

l1=1/mean(x)   #maximalne verohodny odhad parametru lambda z nasich dat
l2=1/mean(y)   #maximalne verohodny odhad parametru lambda z nezavislych dat


X=sort(x)

T1[i]=sqrt(n)*max(abs(pexp(X,lambda)-(1:n)/n))   #statistika pro znamou F*
T2[i]=sqrt(n)*max(abs(pexp(X,l1)-(1:n)/n))       #statistika pro odhadnutou F
T3[i]=sqrt(n)*max(abs(pexp(X,l2)-(1:n)/n))       #statistika pro odhadnutou F z nezavislych dat



if (T1[i]>1.36) zam1=zam1+1
if (T2[i]>1.36) zam2=zam2+1
if (T3[i]>1.36) zam3=zam3+1
}

100*zam1/opak  # procento zamitnuti H0 pro znamy model
100*zam2/opak  # procento zamitnuti H0 pro odhadnuty model
100*zam3/opak  # procento zamitnuti H0 pro nezavisly odhad

#######################################
Kolmogorovuv-Smirnovuv test: odhadnuty model x znamy model za alternativy
#######################################
opak=10000 #pocet simulaci
n=1000     #rozsah vyberu  
lambda=1

zam1=0
zam2=0

T1=rep(0,opak)
T2=rep(0,opak)

for (i in 1:opak){
x=rchisq(n,2)

l=1/mean(x)  #maximalne verohodny odhad parametru lambda z nasich dat
X=sort(x)

T1[i]=sqrt(n)*max(abs(pexp(X,lambda)-(1:n)/n))  #statistika pro znamou F*
T2[i]=sqrt(n)*max(abs(pexp(X,l)-(1:n)/n))       #statistika pro odhadnutou F

if (T1[i]>1.36) zam1=zam1+1
if (T2[i]>1.36) zam2=zam2+1

}

100*zam1/opak  # procento zamitnuti H0 pro znamy model
100*zam2/opak  # procento zamitnuti H0 pro odhadnuty model

# porovnani hustot obou rozdeleni

curve(dchisq(x,df=2), 0,100)
curve(dexp(x,lambda), 0,100,col=2, add=T)


#####################################
chi^2 test dobre shody
######################################
opak=10000 #pocet simulaci
n=100      #rozsah vyberu  
zam1=0
zam2=0

T1=rep(0,opak)
T2=rep(0,opak)

lambda=2  #skutecna hodnota parametru lambda

for (i in 1:opak){
X=rexp(n,lambda)

k=round(15*(n/100)^(2/5)) #optimalni hodnota poctu delicich intervalu
p=1/k

#postup pro znamou F*
cc=0
for (j in 1:k){
cc[j]=qexp(j/k,lambda)
}
cc=c(0,cc)

YY=rep(0,k)
for (j in 1:k){
YY[j]=sum(X<cc[j+1])-sum(X<cc[j])
}

T1[i]=sum((YY-n*p)^2/n/p)

#postup pro odhadnutou F
l=1/mean(X)     #maximalne verohodny odhad parametru lambda
cc=0
for (j in 1:k){
cc[j]=qexp(j/k,l)
}
cc=c(0,cc)

YY=rep(0,k)
for (j in 1:k){
YY[j]=sum(X<cc[j+1])-sum(X<cc[j])
}

T2[i]=sum((YY-n*p)^2/n/p)


if (T1[i]>qchisq(0.95,k-1)) zam1=zam1+1
if (T2[i]>qchisq(0.95,k-2)) zam2=zam2+1
}



100*zam1/opak  # procento zamitnuti H0 pro znamy model
100*zam2/opak  # procento zamitnuti H0 pro odhadnuty model














