# sikiiti to vector
cutpoint<-function(var){
if (!is.vector(var))
{return("var not vector")}
else{
len1<-length(var) #var must be numeric
len2<-as.integer(log10(len1))+2
pnum<-c(1:len2)
return(c(min(var),pnum*len1/len2))
}
}
# rank to vector
order<-function(var){
return(cbind(var,rank(var)))
}
#categori to matrix
categori<-function(var){
#print (order(var))
return(cbind(order(var),cut(order(var)[,2],breaks=cutpoint(var))))
}
#table
tablec<-function(var,target){
if (is.numeric(var)){
t1<-categori(var)
t2<-cbind(t1,target)
myt<-table(t2[,3],t2[,4])}
else {
myt<-table(var,target)
}
gyo<-margin.table(myt,1)
retu<-margin.table(myt,2)
return(addmargins(myt))
}
aic1<-function(var,target){
myt<-tablec(var,target)
mytl<-myt*log(myt)
#return(mytl)
if (is.numeric(var)){
cutnum<-length(cutpoint(var))-1}
else {
cutnum<-length(myt[,1])-1
}
print (cutnum)
sum1<-mytl[,1]+mytl[,2]
sum2<-sum(sum1[1:cutnum])-mytl[cutnum+1,3]
aic1<- -2*sum2+2*(cutnum*2-1)
return(aic1)
}
aic0<-function(var,target){
myt<-tablec(var,target)
mytl<-myt*log(myt)
#print (mytl)
#return(mytl)
#cutnum<-length(cutpoint(var))-1
#print (cutnum)
cutnum<-length(myt[,1])-1
sumr<-mytl[cutnum+1,]
sumr1<-sum(sumr[1:2])
sumc<-mytl[,3]
sumc1<-sum(sumc[1:cutnum])
mmdl<-sumr1+sumc1-2*mytl[cutnum+1,3]
aic0<- -2*mmdl+2*(1+cutnum-1)
return(aic0)
}
aic<-function(var,tar){
#print (aic1(var,tar))
#print (aic0(var,tar))
#print (names(m)[id])
#print ( cbind(aic1(var,tar)-aic0(var,tar),tablec(var,tar)
#,100*tablec(var,tar)/tablec(var,tar)[,3]))
aic<-cbind(aic1(var,tar)-aic0(var,tar),tablec(var,tar)
,100*tablec(var,tar)/tablec(var,tar)[,3])
return(aic1(var,tar)-aic0(var,tar))
}