#Andmete sisestamine, kus ette tuleb anda aegrida, mille elemente eraldab smbol "," ja komakohti smbol "." 
y= c(andmestik)

T=length(y) 

#Statistiku M leidmine vastavalt valemile (4)
St=rep(NA,T)
St[1]=y[1]
for(i in 2:T){
St[i]=St[i-1]+y[i]
}
ST=St[T]
m=rep(NA,T-1)
for(t in 1:(T-1)){
m[t]=((St[t]-t*ST/T)^2)/(t*(1-t/T))
}
M=max(m)
M 
Mindeks=0
for(i in 1:(T-1)){
if(m[i]==M)
Mindeks=i
}
Mindeks 


#Statistiku SST leidmine vastavalt valemile (6)
astak=rank(y)
W=rep(NA,T)
W[1]=astak[1]
for(i in 2:T){
W[i]=W[i-1]+astak[i]
}
mu=rep(NA,T)
for(t in 1:T){
mu[t]=t*(T+1)/2
}
disp=rep(NA,T)
for(t in 1:T){
disp[t]=t*(T-t)*(T+1)/12
}
st=sqrt(disp)
st
SSt=rep(NA,(T-1))
for(i in 1:(T-1)){
SSt[i]=abs((W[i]-mu[i])/(st[i]))
}
SST=max(SSt)
SST
SSTindeks=0
for(i in 1:(T-1)){
if(SSt[i]==SST)
SSTindeks=i
}
SSTindeks


#Jkliikme leidmine vastavalt valemile (8)
T=length(y) 
yk=mean(y)
jaak=y-yk
kumuljaak=rep(NA,T)
for(i in 2:T){
kumuljaak[1]=jaak[1]
kumuljaak[i]=kumuljaak[i-1]+jaak[i]
}
kumuljaak
#Joonistatakse kumulatiivsete jkide graafik
plot(kumuljaak, type="l", xlab="indeks", ylab="kumulatiivne jk") 

#Muutumispunkti leidmine kumulatiivsete jkliikmetega vastavalt valemile (9)
Dt=rep(NA,(T-1))
for(t in 1:(T-1)){
Dt[t]=abs(kumuljaak[t])/sqrt(t*(T-t))
}
DT=max(Dt)
DT
DTindeks=0
for(i in 1:(T-1)){
if(Dt[i]==DT)
DTindeks=i
}
DTindeks

#Vljastatakse uuesti kik leitud statistikud ja otsitavad indeksid
m
M
Mindeks
SSt
SST
SSTindeks
Dt
DT
DTindeks

# manuaalselt sisestatav sobivaim punkt muutumispunktiks 
# valitud eelnevast kolmest

indeks= i_nr 

# genereeritakse indekste jada
indeksjada=seq(1,T,1) 
# genereeritakse indekste jada muutumispunktini
indeksjada1=seq(1,indeks,1) 
# genereeritakse indekste jada muutumispunktist lpuni
indeksjada2=rep(NA,T)
for(i in (indeks+1):T){
indeksjada2[i]=indeksjada[i]}

# aegrida jaotatakse kaheks iseseisvaks aegreaks y1 ja y2
y1=rep(NA,indeks) 
for(i in 1:indeks){
y1[i]=y[i]
}
y2=rep(NA,T)
for(i in (indeks+1):T){
y2[i]=y[i]}

# genereeritakse aegridasid y, y1 ja y2 
# iseloomustavad regressioonsirge
joon=coef(lm(y~indeksjada))[2]*indeksjada + coef(lm(y~indeksjada))[1]
joon1=coef(lm(y1~indeksjada1))[2]*indeksjada1 + coef(lm(y1~indeksjada1))[1]
joon2=coef(lm(y2~indeksjada2))[2]*indeksjada2 + coef(lm(y2~indeksjada2))[1]

# aegridade y1 ja y2 phjal moodustatakse uus iseloomustav joon
joonuus=rep(NA,T) 
for(i in 1:indeks){
joonuus[i]=joon1[i]
}
for(i in (indeks+1):T){
joonuus[i]=joon2[i]}

# analsitakse, kuidas vastavad jooned iseloomustavad aegridu
summary(lm(y~indeksjada)) 
anova(lm(y~indeksjada))
summary(lm(y1~indeksjada1))
anova(lm(y1~indeksjada1))
summary(lm(y2~indeksjada2))
anova(lm(y2~indeksjada2))
cor(y,joonuus)

# vljastatakse joonis, kus on mrgid aegrida, seda iseloomustav 
plot(y, pch=".", xlab="indeks") 
# joonisele lisatakse regressioonsirge ja uus iseloomustav joon
lines(joon1)
lines(joon2, lty=1)
lines(joon, lty=2)
legend(locator(2), c("uus mudel", "regressioonsirge"), lty=1:2)

