+ Näytä koodi- Piilota koodi
PitoAikaMax <- 7 # aika vuosissa
OmatRahat <- 0 # vahentaa lainarahan maaraa
SaamattaJaavaKorko <- 0.02 # milla korolla lainaraha kasvaisi ilman lainaa
LainaAika <- 2 # aika vuosissa
LainaKorko <- 0.065 # lainan korko
PolttoAineenHinta <- 1.62 # bensiinin tai dieselin litrahinta
#AutonHinta <- 51190 # euroa
Kulutus <- 7.1 # l/100 km
HiilidioksidiPaastot <- 0.163 # g/km
ArvonAlennusProsentti <- 0.12 # %/vuosi
AjoneuvoveroPerV <- 105.85 # euroa/vuosi
LiikenneVakuutusPerV <- 315 # euroa/vuosi
KaskoVakuutusPerV <- 550 # euroa/vuosi
SailytysPysakointiPerV <- 468 # sailytys ja pysakointikulut (euroa/vuosi)
RengasKuluPerKMV <- 150 # Rengaskulut/vuosi/10000km
HuoltoKorjausPesuPerKMV <- 340 # Huolto-, korjaus- ja pesukulut/vuosi/10000km
KorvausPerKM <- 0.45 # euroa/km
#
N <- 8 # Intervallien maara
Intervalli <- 5000 # Intervallin pituus (km)
P <- 10 # Jaotus 100/P prosenttiyksikon intervalliin
# Luodaan muuttuville kustannuksille taulukko, jossa akseleina
# (1) km-korvauksen piiriin kuuluvien ajojen maara kaikista
# ajoista (floor(100/P) + 1 alkiota, esim. jos P = 10 =>
# akselilla arvot [0%, 10%, 20%, ..., 90%, 100%]),
# (2) kokonaisajosuorite ((N+1) alkiota, jokainen vastaa 5000 km intervallia =>
# akselilla arvot [0km, 5000km, 10000km ..., 35000km, 40000km]),
# (3) pitoaika (MaxPitoAika alkiota, esim. jos MaxPitoAika = 7 =>
# akselilla arvot [1v, 2v, ..., 6v, 7v]).
# Taulokko alustetaan nollilla:
#
Pmax <- floor(100/P) + 1
Nmax <- N+1
MuuttuvatKulut <- array(0, c(Pmax,Nmax,PitoAikaMax))
for(t in 1:PitoAikaMax) {
for(p in 1:Pmax) {
for(n in 1:Nmax) {
PolttoAineKulut <- ((Kulutus/100)*(n-1)*Intervalli*PolttoAineenHinta)*t
RengasKulut <- RengasKuluPerKMV*((n-1)*Intervalli/10000)*t
HuoltoKorjausPesuKulut <- HuoltoKorjausPesuPerKMV*((n-1)*Intervalli/10000)*t
KilometriKorvaus <- (KorvausPerKM*(n-1)*Intervalli*(p-1)*P/100)*t
MuuttuvatKulut[p,n,t] <- PolttoAineKulut + RengasKulut +
HuoltoKorjausPesuKulut - KilometriKorvaus
}
}
}
# Luodaan paaomakustannuksille taulukko, jossa akselina pitoaika
PaaomaKulut <- array(0, c(PitoAikaMax))
# Taytetaan PaaomaKulut-taulukko siihen kuuluvilla kuluerilla:
#
for(t in 1:PitoAikaMax) {
ArvonAlennus <- AutonHinta*(1 - (1 - ArvonAlennusProsentti)**t)
#
# Lasketaan korkotappiot olettamalla tasalainalyhennys kerran vuodessa:
kp <- 1 + LainaKorko
Annuiteetti <- (AutonHinta - OmatRahat)*(kp**LainaAika)*LainaKorko/(kp**LainaAika - 1)
KorkoMenot <- Annuiteetti*LainaAika - (AutonHinta - OmatRahat)
# Huom! Poikkeaa maaritelmasta, jonka mukaan paaoman korko lasketaan
# vuoden alussa jaljella olevalle investoidulle paaomalle.
#
LiikenneVakuutus <- LiikenneVakuutusPerV*t
KaskoVakuutus <- KaskoVakuutusPerV*t
AjoneuvoVero <- AjoneuvoveroPerV*t
SailytysPysakointi <- SailytysPysakointiPerV*t
PaaomaKulut[t] <- ArvonAlennus + KorkoMenot + LiikenneVakuutus +
KaskoVakuutus + AjoneuvoVero + SailytysPysakointi
}
PaaomaKulut
# Laajennetaan Paaomakulut samankokoiseksi taulukoksi kuin
# MuuttuvatKulut-taulukko
PaaomaKulut2 <- array(0, c(Pmax,Nmax,PitoAikaMax))
for(t in 1:PitoAikaMax) {
PaaomaKulut2[1:Pmax,1:Nmax,t] <- PaaomaKulut[t]
}
# Lasketaan kokonaiskustannukset pitoajalta
KokonaisKulut <- array(0, c(Pmax,Nmax,PitoAikaMax))
KokonaisKulut <- MuuttuvatKulut + PaaomaKulut2
KokonaisKulutPerKM <- array(0, c((Pmax-1),(Nmax-1),PitoAikaMax))
for(t in 1:PitoAikaMax) {
for(p in 1:(Pmax-1)) {
for(n in 1:(Nmax-1)) {
KokonaisKulutPerKM[p,n,t] <- KokonaisKulut[p,n,t]/(n*Intervalli*t)
}
}
}
# Alla maaritellyt vektorit luetaan kayttajien tietokantaan talletetuista tiedoista
LiikenneSuoriteMuut<-c(10000,20000,15000,30000)
KmKorvausProsentitMuut<-c(30,40,60,60)
# SKENAARIOANALYYSI
# 1. Nykykaytanto-skenaario (nykyinen km-korvauskaytanto jatkuu, tulokset pyoristetaan alaspain lahimpaan
# 5000-km -intervalliin ja lahimpaan %-desiiliin):
#
KorvattavatKilometritPros1 <- floor(KorvattavatKilometritPros/10)+1
AjetutKilometrit1 <- floor(AjetutKilometrit/Intervalli)+1
#
OmaKukkaro1 <- KokonaisKulut[KorvattavatKilometritPros1, AjetutKilometrit1, as.numeric(Ajanjakso)]
KaikkienKukkaro1 <- -1.046*10^9*as.numeric(Ajanjakso)
# http://www.vero.fi/fi-FI/Tietoa_Verohallinnosta/Tuloverotilastoja%2814419%29
# 2. LVM:n (liikenne- ja viestintaministerio) kaavailema ehdotus
#
KilometriKattoLVM <- 15000 # http://www.smkj.fi/fi/ajankohtaista/320-kilometrikorvaus-kysymyksia-ja-vastauksia
KorvausPerKMLVM <- 0.23 # http://www.smkj.fi/fi/ajankohtaista/320-kilometrikorvaus-kysymyksia-ja-vastauksia
Nmax2 <- floor((AjetutKilometrit-KilometriKattoLVM)/Intervalli)+1
MuuttuvatKulutB <- array(0, c(Pmax,Nmax2,PitoAikaMax))
MuuttuvatKulut2 <- 0
#
# IF-lause alkaa
if(AjetutKilometrit > KilometriKattoLVM) {
for(t in 1:PitoAikaMax) {
for(p in 1:Pmax) {
for(n in 1:Nmax2) {
PolttoAineKulut <- ((Kulutus/100)*(n-1)*Intervalli*PolttoAineenHinta)*t
RengasKulut <- RengasKuluPerKMV*((n-1)*Intervalli/10000)*t
HuoltoKorjausPesuKulut <- HuoltoKorjausPesuPerKMV*((n-1)*Intervalli/10000)*t
KilometriKorvaus <- (KorvausPerKMLVM*(n-1)*Intervalli*(p-1)*P/100)*t
MuuttuvatKulutB[p,n,t] <- PolttoAineKulut + RengasKulut +
HuoltoKorjausPesuKulut - KilometriKorvaus
}
}
}
AjetutKilometrit2 <- floor(KilometriKattoLVM/Intervalli)+1
MuuuttuvatKulut2 <- MuuttuvatKulut[KorvattavatKilometritPros1, AjetutKilometrit2, as.numeric(Ajanjakso)] + MuuttuvatKulutB[KorvattavatKilometritPros1, Nmax2, as.numeric(Ajanjakso)]
#
OmaKukkaro2 <- PaaomaKulut2[KorvattavatKilometritPros1, AjetutKilometrit1, as.numeric(Ajanjakso)] + MuuttuvatKulut2
} else OmaKukkaro2 <- KokonaisKulut[KorvattavatKilometritPros1, AjetutKilometrit1, as.numeric(Ajanjakso)]
# IF-lause paattyy
KaikkienKukkaro2 <- (-1.046*10^9 + 70*10^6)*as.numeric(Ajanjakso)
# http://www.ts.fi/uutiset/kotimaa/326230/Paljon+ajavien+kilometrikorvaus+pienenee
# 3. LVM:n ehdotus omilla parametreilla
#
Nmax2 <- floor((AjetutKilometrit-KilometriKattoOma)/Intervalli)+1
MuuttuvatKulutB <- array(0, c(Pmax,Nmax2,PitoAikaMax))
MuuttuvatKulut2 <- 0
#
# IF-lause alkaa
if(AjetutKilometrit > KilometriKattoOma) {
for(t in 1:PitoAikaMax) {
for(p in 1:Pmax) {
for(n in 1:Nmax2) {
PolttoAineKulut <- ((Kulutus/100)*(n-1)*Intervalli*PolttoAineenHinta)*t
RengasKulut <- RengasKuluPerKMV*((n-1)*Intervalli/10000)*t
HuoltoKorjausPesuKulut <- HuoltoKorjausPesuPerKMV*((n-1)*Intervalli/10000)*t
KilometriKorvaus <- (KorvausPerKMOma*(n-1)*Intervalli*(p-1)*P/100)*t
MuuttuvatKulutB[p,n,t] <- PolttoAineKulut + RengasKulut +
HuoltoKorjausPesuKulut - KilometriKorvaus
}
}
}
AjetutKilometrit2 <- floor(KilometriKattoOma/Intervalli)+1
MuuuttuvatKulut2 <- MuuttuvatKulut[KorvattavatKilometritPros1, AjetutKilometrit2, as.numeric(Ajanjakso)] + MuuttuvatKulutB[KorvattavatKilometritPros1, Nmax2, as.numeric(Ajanjakso)]
#
OmaKukkaro3 <- PaaomaKulut2[KorvattavatKilometritPros1, AjetutKilometrit1, as.numeric(Ajanjakso)] + MuuttuvatKulut2
} else OmaKukkaro3 <- KokonaisKulut[KorvattavatKilometritPros1, AjetutKilometrit1, as.numeric(Ajanjakso)]
# IF-lause paattyy
# Kiinnitetaan priorijakaumat
PrioriMinus <- 0.2
PrioriPlus <- 0.8
# 4. Pelkkien käyttökustannusten korvaus
#
# Kaytetaan Weybull-jakautumaa maarittamaan paljonko kokonaiskilometrimaarasta kuuluu juustohoylan alle
#
#
# Visualisointi
#
# Muuttuvat kulut
filled.contour(x = (0:(Nmax-1))*Intervalli, y = (0:(Pmax-1))*10, z = t(MuuttuvatKulut[,,as.numeric(Ajanjakso)]),
plot.axes ={ axis(1); axis(2); points(AjetutKilometrit,KorvattavatKilometritPros, cex=2, col=2, pch=1);
points(AjetutKilometrit,KorvattavatKilometritPros, cex=3, col=2, pch=1);
points(LiikenneSuoriteMuut, KmKorvausProsentitMuut, cex=1, col=1, pch=0);
legend(0, 100, c("Muut vastaajat", "Omat tietosi"), cex=0.8, col=c("black","red"), pch=0:1) },
plot.title = title(main = "Muuttuvat kulut (= käyttökulut - kilometrikorvaus) KOKO pitoajalta
(sinertävä väri: kilometrikorvaus suurempi kuin käyttökulut)",
xlab = "Kokonaisliikennesuorite/vuosi (=ajokilometrit vuodessa)",
ylab = "Kilometrikorvattavien ajojen osuus prosentteina kokonaisliikennesuoritteesta"),
key.title = title(main="Euroa")
)
#
# Kokonaiskulut
filled.contour(x = (0:(Nmax-1))*Intervalli, y = (0:(Pmax-1))*10, z = t(KokonaisKulut[,,as.numeric(Ajanjakso)]),
plot.axes ={ axis(1); axis(2); points(AjetutKilometrit,KorvattavatKilometritPros, cex=2, col=2, pch=1);
points(AjetutKilometrit,KorvattavatKilometritPros, cex=3, col=2, pch=1) },
plot.title = title(main = "Kokonaiskulut (= pääomakulut + muuttuvat kulut) KOKO pitoajalta
(sinertävä väri: kilometrikorvaus suurempi kuin pääomakulujen ja käyttökulujen summa)",
xlab = "Kokonaisliikennesuorite/vuosi (=ajokilometrit vuodessa)",
ylab = "Kilometrikorvattavien ajojen osuus prosentteina kokonaisliikennesuoritteesta"),
key.title = title(main="Euroa")
)
#
par(mfcol = c(2,2))
boxplot(OmaKukkaro1, KaikkienKukkaro1); title("Käyttökulujen ja km-korvauksen erotus, pitoaika 1v, 20000km/v")
plot(MuuttuvatKulut[,5,5]); title("Käyttökulujen ja km-korvauksen erotus, pitoaika 5v, 20000km/v")
plot(MuuttuvatKulut[,5,3]); title("Käyttökulujen ja km-korvauksen erotus, pitoaika 3v, 20000km/v")
plot(MuuttuvatKulut[,5,7]); title("Käyttökulujen ja km-korvauksen erotus, pitoaika 7v, 20000km/v")
| |