読者です 読者をやめる 読者になる 読者になる

model.selection.R

R 1000speakers

総当りで的中率が高いモデルを探してくるとか、いかにもやっちゃいけないことをやっている。とりあえずこれでよさそうなモデルとかに当たりを付けるということをやってる。

twitter <- read.csv("/home/yasuhisa/twitter.txt",header=FALSE)
source("/home/yasuhisa/twitter.R")
head(twitter)
twitter <-twitter[!apply(apply(twitter[-1],1,is.na),2,any),]

attach(twitter)
per<-following/followers

apply(twitter[-1],2,length)
apply(twitter[-1],2,summary)

is_otaku <- ifelse(is_otaku + is_otaku_in_blog + is_blog_in_bio> 0,1,0)
is_blog <- ifelse(is_blog_in_bio + is_blog_in_web > 0,1,0)
is_students <- ifelse(is_students + is_students_in_blog > 0,1,0)
is_program <- ifelse(is_program + is_program_in_blog > 0,1,0)
is_otaku_by_bayes <- ifelse(is_otaku_in_bio_by_bayes +is_otaku_in_entry_by_bayes > 0,1,0)

reg <- c()
for(i in 2:length(grid[,1])){
  reg[i-1] <- list(twit[grid[i,]==1])
}

max = 0
max_reg = ""
for(i in 1:length(reg)){
  reg_string <- ""
  for(j in 1:length(reg[[i]])){
    if(j ==1){
      reg_string <- paste(reg_string,reg[[i]][j],sep="")
      #モデルの説明変数が1個の時を忘れてしまっている
      #ここにif(j==length(reg[[i]]))を入れて計算させないと全部の式はでない
    }else if(j==length(reg[[i]])){
      reg_string <- paste(reg_string," + ",reg[[i]][j],sep="")
      reg_string <- paste("Tooth.glm<-glm(is_follow~",reg_string,", family=binomial)",sep="")
      eval(parse(text=reg_string))
#      print(eval(parse(text=paste("summary(",reg_string,")",sep=""))))
      予測値<-fitted(Tooth.glm)
      予測値1<-round(予測値)
#      print(table(is_follow,予測値1))
      table <- table(is_follow,予測値1)
      if(!is.na(((table[1]+table[4])/sum(table(is_follow,予測値1))))){
        if(((table[1]+table[4])/sum(table(is_follow,予測値1))) > 0.73){
          print(reg_string)
          fitted(Tooth.glm)[1:10]
          print((table[1]+table[4])/sum(table(is_follow,予測値1)))
          if(((table[1]+table[4])/sum(table(is_follow,予測値1))) > max){
            max <- ((table[1]+table[4])/sum(table(is_follow,予測値1)))
            max_reg <- reg_string
          }
        }
      }
    }else{
      reg_string <- paste(reg_string," + ",reg[[i]][j],sep="")
    }
  }
}

print(max)
print(max_reg)
print(eval(parse(text=paste("summary(",reg_string,")",sep=""))))
system("ruby /home/yasuhisa/alert4twitter.rb")

Tooth.glm<-glm(is_follow~ favorites + update + per + entry_size + is_otaku + is_students + is_program + is_friend, family=binomial)

#summary(Tooth.glm)

予測値<-fitted(Tooth.glm)
予測値1<-round(予測値)
table <- table(is_follow,予測値1)
(table[1]+table[4])/sum(table(is_follow,予測値1))