ロジスティック回帰

  • 今、次のような2x3カウントデータのファイルがあるとする。
rs1	10	20	30	40	20	10
rs2	11	21	31	41	21	11
  • ファイルを読み込んでロジスティック回帰をして、その\hat{\theta},sd,z,pを返す関数
LogisticTestColumns2<-function(file,columns){
data<-read.table(file)
res<-c()
label<-c("g1","g2","g3","g4","g5","g6","theta","sd","z","p")
counter<-0
res<-c(res,label)
for(i in 1:length(data$V1)){
 P<-c(rep(0,data[i,columns[1]]+data[i,columns[2]]+data[i,columns[3]]),rep(1,data[i,columns[4]]+data[i,columns[5]]+data[i,columns[6]]))
 G<-c(rep(0,data[i,columns[1]]),rep(1,data[i,columns[2]]),rep(2,data[i,columns[3]]),rep(0,data[i,columns[4]]),rep(1,data[i,columns[5]]),rep(2,data[i,columns[6]]))
 result<-glm(P~G,family=binomial)
 summary<-summary(result)
 tmplist<-c(data[i,columns[1]],data[i,columns[2]],data[i,columns[3]],data[i,columns[4]],data[i,columns[5]],data[i,columns[6]],summary$coefficients[2],summary$coefficients[4],summary$coefficients[6],summary$coefficients[8])
 res<-c(res,tmplist)
}
mat<-matrix(res,nrow=length(label))
#mat<-t(mat)
return(mat)
}
  • コマンド "result<-LogisticTestColumns2("testGen2.txt",c(2,3,4,5,6,7))"
    • ファイルと、6つの値のカラムを与える
  • "write.table(t(result),"out4.txt",sep="\t",col.names=FALSE,row.names=FALSE)"
    • ファイルに書き出す
LogisticTestColumns<-function(file,columns){
data<-read.table(file)
res<-list(NULL)
label<-c("theta","sd","z","p")
counter<-0
res[[counter<-counter+1]]<-label
for(i in 1:length(data$V1)){
 P<-c(rep(0,data[i,columns[1]]+data[i,columns[2]]+data[i,columns[3]]),rep(1,data[i,columns[4]]+data[i,columns[5]]+data[i,columns[6]]))
 G<-c(rep(0,data[i,columns[1]]),rep(1,data[i,columns[2]]),rep(2,data[i,columns[3]]),rep(0,data[i,columns[4]]),rep(1,data[i,columns[5]]),rep(2,data[i,columns[6]]))
 result<-glm(P~G,family=binomial)
 summary<-summary(result)
 tmplist<-c(summary$coefficients[2],summary$coefficients[4],summary$coefficients[6],summary$coefficients[8])
 res[[counter<-counter+1]]<-tmplist
}
return(res)
}
  • コマンド "result<-LogisticTestColumns("testGen2.txt",c(2,3,4,5,6,7))"
    • ファイルと、6つの値のカラムを与える