Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 9

setwd("d:/datar/thesis")

data <- read.table("matriksLnm.txt", header=TRUE,


sep="\t", na.strings="NA", dec=".", strip.white=TRUE)

expos <- read.table("exp_Taiwan.txt", header=TRUE,


sep="\t", na.strings="NA", dec=".", strip.white=TRUE)

death <- read.table("de_Taiwan.txt", header=TRUE,


sep="\t", na.strings="NA", dec=".", strip.white=TRUE)

y <- data[,-1]
exx <- expos[,-1]
data_de <- death[,-1]
maxusia=104
maxtahun=50

simpan_d <- vector(length=10000)


nilai_estimasi <- vector(length=10000)
selisih <- vector(length=10000)
simpan_k <- vector(length=10000)
ax <- vector(length=maxusia)

## fungsi de_es

jum_es <- function(a, b, exx, ki)


{
jum=0
i=1
while(
j=1
while (j <= maxusia)
{
jum = jum + (exx[j] * exp(ax[j] + b[j] * ki))
j=j+1
}
de_es = jum
return(de_es)
}

## estimasi ax

i=1
while (i<=maxusia+1)
{
j=1
jum=0
while (j<=maxtahun)
{
jum=jum+y[i,j]
j=j+1
}
ax[i]=jum/49
i=i+1
}

## estimasi b dan k

Z <- matrix(nrow=maxusia+1, ncol=maxtahun)


k=1
while (k<=maxusia+1)
{
l=1
while (l<=maxtahun)
{
Z[k,l] = y[k,l] - ax[k]
l=l+1
}
k=k+1
}
ZZ=svd(Z)
U=ZZ$u
V=ZZ$v
S=ZZ$d
sumU=0
x=1
while(x<=maxusia)
{
sumU = U[x,1] + sumU
x=x+1
}
u=U[,1]
b=(1/sumU)*u
sum_b=sum(b)
s=S[1]
v=V[,1]
k=s*v*sumU
sum_k=sum(k)
Tahun = 1969
## k_baru = []
## menghitung jumlah kematian dengan k awal (k1)

i=1
while (i <= maxtahun)
{
ki = k[i]
dataexposure = exx[,i]
de_es = jum_es(a, b, dataexposure, ki)
i=i+1
}

## re-estimasi parameter k dan menghitung jumlah kematian dengan k baru (k2)

k_baru <- vector(length=maxtahun)


est_baik <- vector(length=maxtahun)

i=1
while (i <= maxtahun)
{
ki=k[i]
dataexposure=exx[,i]
de_es = jum_es(a, b, dataexposure, ki)
de_act = sum(data_de[,i])
iter=0
simpan_d=0

d=0
while (d<=10)
{
iter=iter+1
if (de_es > de_act)
{
if (ki > 0)
{
kk = ki*(1-d)
}
else
{
kk = ki*(1+d)
}
de_es1 = jum_es(a, b, dataexposure, kk)
}
else if (de_es < de_act)
{
if (ki > 0)
{
kk = ki*(1+d)
}
else
{
kk = ki*(1-d)
}
de_es1 = jum_es(a,b,dataexposure,kk)
}
else
{
kk = ki
}
simpan_d[iter] = d
nilai_estimasi[iter]=de_es1
selisih[iter]=abs(de_es1 - de_act)
simpan_k[iter]=kk
de_es=de_es1

## cek nilai error terkecil


min = 10000000
t=1
while(t<=iter)
{
if(selisih[t] < min)
{
min = selisih[t]
tmp=t
}
else
{
min=min
}
t=t+1
}

d=d+0.001
}

k_baru[i]=simpan_k[tmp]
est_baik[i]=nilai_estimasi[tmp]

i=i+1
}

nilai_d[i]=simpan_d[tmp]
## menampilkan hasil estimasi, selisih, dan nilai parameter k
simpan_d
simpan_k
nilai_estimasi
selisih
min

You might also like