attach("_Revbook",pos=1) ##unix revive<-function(in.file="noinput",out.file="noreport",cmds="", ##unix editor="eddy",ps.height=8,ps.width=8){ revive<-function(in.file="noinput",out.file="noreport",cmds="", editor="edit",ps.height=8,ps.width=8){ cat("+---------------------------------------------+\n") cat("| |\n") cat("| revive -- version 2.661 |\n") cat("| |\n") cat("+---------------------------------------------+\n") ASSIGN.r<- function(data,newname,frame){ if(missing(frame)){ if(exists("w.frame.r")){ frame<-w.frame.r } else{ frame<-sys.parent() } } assign(newname,data,frame) } ASSIGN.r(ASSIGN.r,"ASSIGN.r",frame=1) h.r<- function(objektname,objekt){ if(!missing(objektname)){ if(missing(objekt)){ objekt<-get(objektname,frame=sys.parent()) } ASSIGN.r(objekt,objektname,frame=1) } } ASSIGN.r(h.r,"SAVE.r",frame=1) h.r<-function(x,...){ local.print<-function(x,...){ UseMethod("print") } if((!exists("first.call.r"))&&exists("sinkname.r")){ assign("first.call.r",1,frame=1) sink() local.print(x,...) sink(sinkname.r,append=T) local.print(x,...) remove("first.call.r",frame=1) sink() } else{ local.print(x,...) } invisible() } ASSIGN.r(h.r,"print",frame=1) h.r<-function(..., file = "", sep = " ", fill = F, labels = NULL, append = F){ local.cat<- function (..., file = "", sep = " ", fill = F, labels = NULL, append = F){ ##unix .Internal(cat(..., file, sep, fill, labels, append), "S_cat", T, 0) ##unix } # end of local function for unix to.clipboard <- F if(file == "clipboard") { if(append) stop("cannot use append=T with file=\"clipboard\"") file <- tempfile() to.clipboard <- T } val<-.Internal(cat(...,file,sep, fill, labels, append), "S_cat",T , 0) if(to.clipboard) { # cat(file="|stderr") as workaround for bug that warnings scheduled from # on.exit don't get issued on error on.exit(cat( "error in transferring cat output to clipboard;", "\nOutput saved in", file, "\n", file = "|stderr") ) write.to.clipboard(file = file) on.exit(add = F) unlink(file) } val } # end of local function for windows if((!exists("first.call.r"))&&exists("sinkname.r")){ assign("first.call.r",1,frame=1) sink() local.cat(..., file=file,sep=sep,fill=fill, labels=labels,append=append) sink(sinkname.r,append=T) local.cat(..., file=file,sep=sep,fill=fill, labels=labels,append=append) remove("first.call.r",frame=1) sink() } else{ local.cat(..., file=file,sep=sep,fill=fill, labels=labels,append=append) } invisible() } ASSIGN.r(h.r,"cat",frame=1) h.r<-function(){ ##unix h.r<-unix("read h; echo \"$h\"") h.r<- .C("dos_readline", ret = character(1))$ret if(exists("sinkname.r")){ print(h.r) } h.r } ASSIGN.r(h.r,"readline",frame=1) ##unix h.r<- function(file = "", what = double(0), n = -1, ##unix sep = "", multi.line = F, flush = F, append = F, ##unix skip = 0) h.r<- function(file = "", what = double(0), n = -1, sep = "", multi.line = F, flush = F, append = F, skip = 0, widths = NULL, strip.white = NULL) { if(file == "clipboard") { cfile <- read.from.clipboard() on.exit(unlink(cfile)) file <- cfile } if(skip != 0) { tempname <- tempfile("S.") ##unix on.exit(unlink(tempname)) on.exit(unlink(tempname), add = T) ##unix if(unix(paste("tail +", skip + 1, " ", file, ">", tempname, ##unix sep = ""), output = F)) if(.C("dos_tail", as.character(file), as.integer(1), as.integer(skip + 1), tempname, ret = integer(1))$ret) stop(paste("Problem skipping", skip, "lines of file", file, "or writing temp file", tempname)) file <- tempname } if(!missing(widths)) { if(missing(sep)) { sep <- "\001" } } if(missing(strip.white)) { if(!missing(widths)) { strip.white <- T } } h.r<-.Internal(scan(file, what, n, sep, multi.line, ##unix flush, append), "S_scan", T, 0) flush, append, widths, strip.white), "S_scan", T, 0) if(exists("sinkname.r")){ if(file=="")print(h.r) } h.r } ASSIGN.r(h.r,"scan",frame=1) h.r<-function(auswahl,mess="items:",la=letters[1:length(auswahl)]){ mess<-c(mess,paste("\n",la,auswahl),"\nSelection: ") cat(mess) res<-match(substring(paste(readline()," "),1,1),la) if(is.na(res)) return(0) else return(res) } ASSIGN.r(h.r,"menu",frame=1) h.r<-function(filename){ ASSIGN.r(filename,"sinkname.r",frame=1) } ASSIGN.r(h.r,"DUMP.ON.r",frame=1) h.r<-function(filename){ if(exists("sinkname.r"))remove("sinkname.r",frame=1) } ASSIGN.r(h.r,"DUMP.OFF.r",frame=1) h.r<-function(in.file,out.file,l.sec.no.r,editor,ps.width,ps.height, r.flag.r, o.flag.r, c.choice.r ){ E <-0.05 EE<-0.1 fields<-rbind( c(1,2,1), c(0,3,1), c(5,3,1), c(6,3,1), c(2,2,1), c(3,2,1), c(1,3,1), c(0,2,1), c(2,4,0), c(0,4,1), c(6,4,0) ) fields.names<-c("exit.console","help" , "new.paper", "new.report" ,"Splus" , "modify" , "options" ,"EXIT" , "Input:" , "RELAX", "Report:") if(in.file!="noinput"){ fields<-rbind(fields, c(2,3,1) , c(3,3,1), c(4,3,1) ,c(4,2,1), c(5,2,1) ) fields.names<-c(fields.names, "next" , "again" , "section","from:to", "show.next" ) } if(out.file!=F){ fields<-rbind(fields, c(7,3,1), c(9,3,1), c(8,3,1), c(7,2,1), c(9,2,1), c(8,2,1), c(6,2,1) ) fields.names<-c(fields.names, "append", "copy.plot","view.report","edit", "repeat.plot","copy.text","set.flags") } TEXT<-function(x,y,lab) ##unix text(x,y,lab,adj=0) text(x,y,lab,adj=0,cex=0.6) LINES<-function(xy,E,EE){ xy<-matrix(c(min(xy[,1]),max(xy[,1]),min(xy[,2]),max(xy[,2])),2,2) xy<-xy+matrix(c(-E,1-EE,-.5,.5),2,2) lines(c(xy[1,1],xy[2,1],xy[2,1],xy[1,1],xy[1,1]), c(xy[1,2],xy[1,2],xy[2,2],xy[2,2],xy[1,2])) } LOESCHE<-function(xy,E,EE){ h<-par(col=0) xy<-matrix(c(min(xy[,1]),max(xy[,1]),min(xy[,2]),max(xy[,2])),2,2) xy<-xy+matrix(c(0,1-EE,E-.5,.5-E),2,2) polygon(c(xy[1,1],xy[2,1],xy[2,1],xy[1,1]), c(xy[1,2],xy[1,2],xy[2,2],xy[2,2])) par(h) } if(T!=revive.console.r[2]){ if(!exists(".Devices")).Devices<-"null device" h1<-.Devices ##unix motif(options="-geometry 1000x271+1000+3000 -title REVIVE--CONSOLE") win.graph(width=8,height=1.3) cat("shift console window as you like and press RETURN\n"); readline() h2<-get(".Devices",frame=0) # if(length(h1)!=length(h2)) h1<-c(h1,list("")) # h<-(1:length(h2))[unlist(h1)!=unlist(h2)] # h2[[h]]<-"rconsole" h2[[dev.cur()]]<-"rconsole" assign(".Devices",h2,frame=0) par(mai=rep(0,4)) par(omi=rep(0,4)) SAVE.r("revive.console.r",c(T,T)) } for(i in 1:(length(dev.list()))){ if(names(dev.cur())!="rconsole") dev.set() else break } par(usr=c(-0.2,10,0,5.5)) TEXT(fields[,1],fields[,2],fields.names) LINES(matrix(c(2,5,2,3),2,2),E,EE) LINES(matrix(c(6,9,2,3),2,2),E,EE) LINES(matrix(c(0,1,2,3),2,2),E,EE) LINES(matrix(c(0,0,4,4),2,2),E,EE) if(in.file!="noinput"){ LOESCHE(matrix(c(3,5,4,4),2,2),E,EE) TEXT(3,4,paste(in.file,"-> last sec.:",l.sec.no.r,)) } if(out.file!=F){ LOESCHE(matrix(c(7,9,4,4),2,2),E,EE) TEXT(7,4,out.file) } repeat{ LOESCHE(matrix(c(0,9,.5,1),2,2),E,EE) TEXT(0,1,"CHOOSE BUTTON!") xy<-floor(c(0,0.5)+unlist(locator(1))) LOESCHE(matrix(c(0,9,.5,1),2,2),E,EE) fieldno<-(1:nrow(fields))[ xy[1]==fields[,1] &xy[2]==fields[,2] & fields[,3] ] if(0!=length(fieldno)){ cmd<-fields.names[fieldno] if(cmd=="options"){ LOESCHE(matrix(c(0,9,.5,1),2,2),E,EE) opt.fields<-rbind( "set options by Splus button:" =c(2, 1,0), "CLICK AGAIN" =c(0, 1,0), "Splus: editor<- 'nedit' " =c(4, 1,0), "Splus: ps.height<-6" =c(6, 1,0), "Splus: ps.width<-7" =c(8, 1,0) ) opt.fields.names<-dimnames(opt.fields)[[1]] TEXT(opt.fields[,1],opt.fields[,2],opt.fields.names) TEXT(4,.3,paste("is",editor)) TEXT(6,.3,paste("is",ps.height)) TEXT(8,.3,paste("is",ps.width)) locator(1) } else if(cmd=="help"){ cat("BASE:\n") cat(" help : shows this help\n") cat(" options : hints for setting options\n") cat(" exit.console : stops console control\n") cat(" EXIT : stops revive\n") cat(" Splus : gets a Splus command\n") cat(" modify : modifies last section of Splus command\n") cat("INPUT:\n") cat(" new.paper : opens file containing a revweb paper\n") cat(" next : activates next section\n") cat(" again : activates section again\n") cat(" section : selects section for activation\n") cat(" from:to : activates a sequence of sections\n") cat(" show.next : show next section\n") cat("REPORT:\n") cat(" new.report : opens a new report file\n") cat(" append : appends a comment to the report\n") cat(" edit : edits report file\n") cat(" view.report : shows report file\n") cat(" copy.plot : copies graphics as postscript file\n") cat(" repeat.plot : repeat last command\n") cat(" copy.text : copies text chunks from input file\n") cat(" set.flags : sets flags for reporting\n") cat("PRESS RETURN!") readline() } else if(cmd=="RELAX"){ cat("PRESS RETURN\n") readline() } else break } } switch(cmd, "exit.console"={ SAVE.r("revive.console.r",c(F,F)) dev.off() cmd.r<-'cat("REVIVE CONSOLE STOPPT\n")' }, "next" =cmd.r<-" ", "again" =cmd.r<-".", "show.next" =cmd.r<-"S", "section" ={ cat("section number?\n") h<-readline() cmd.r<-paste("s",h,sep="") }, "new.paper" ={ cat("input file?\n") h<-readline() cmd.r<-paste("i",h,sep="") }, "Splus" ={ cat("Splus: ") h<-readline() cmd.r<-paste(">",h,sep="") }, "modify" =cmd.r<-"m", "from:to" ={ cat("number of first and number of last section?\n") cat("e.g.: 10:15\n") h<-readline() cmd.r<-paste("s",h,sep="") }, "append" ={ cat("text to append? ") h<-readline() cmd.r<-paste("a",h,sep="") }, "edit" =cmd.r<-"e", "copy.plot" ={ cat("name of postscript file\n") h<-readline() cmd.r<-paste("p",h,sep="") }, "repeat.plot" ={ cat("name of postscript file\n") h<-readline() cmd.r<-paste("P",h,sep="") }, "view.report" =cmd.r<-"v", "copy.text" ={ cat("section number?\n") h<-readline() cmd.r<-paste("t",h,sep="") }, "new.report" ={ cat("report file?\n") h<-readline() cmd.r<-paste("r",h,sep="") }, "set.flags" ={ repeat{ LOESCHE(matrix(c(0,9,.5,1),2,2),E,EE) flg.fields<-rbind( c(2,1,1), c(4,1,1), c(6,1,1), c(8,1,1), c(0,1,0) ) flg.fields.names<-c( c("START report","STOP report")[2-r.flag.r], c("ADD result","NO result")[2-o.flag.r], c("ALL commands", "ONLY section no", "LAST command", "NO commands")[c("+","n","l","-")==c.choice.r], "OK", "CHOOSE and CLICK OK!" ) TEXT(flg.fields[,1],flg.fields[,2],flg.fields.names) LINES(matrix(c(2,8,1,1),2,2),E,EE) xy<-floor(c(0,0.5)+unlist(locator(1))) fieldno<-(1:nrow(flg.fields))[ xy[1]==flg.fields[,1] &xy[2]==flg.fields[,2] & flg.fields[,3] ] if(0!=length(fieldno)){ if(fieldno==1){ r.flag.r<-!r.flag.r } if(fieldno==2){ o.flag.r<-!o.flag.r } if(fieldno==3){ c.choice.r<-c("+","n","l","-")[ (1:4)[c("+","n","l","-")==c.choice.r]%%4+1 ] } if(fieldno==4){ cmd.r<-paste(">cmds<-c(", "'r",c("+","-")[2-r.flag.r],"',", "'o",c("+","-")[2-o.flag.r],"',", "'c",c.choice.r,"')" ) LOESCHE(matrix(c(0,9,.5,1),2,2),E,EE) break } } } }, "EXIT" ={ dev.off() cmd.r<-"q" } ) if(names(dev.cur())=="rconsole")dev.set() cmd.r } ASSIGN.r(h.r,"GETCMD.r",frame=1) EVALCMD.r<-function(cmd,prnt=T,out.file=F,err.msg=" ",c.c=c.choice.r, o.f=o.flag.r,r.f=r.flag.r,ucmd=command.r,no=0){ restart() # if statement for Splus 3.4 / hpux 10.2 10.2.97 pw if(exists("sink.number")){ while(sink.number()>0){sink()} } else { sink() } DUMP.OFF.r() if(any(err.msg!=" ")){ return(paste("error in",err.msg)) } err.msg<-"evaluate cmds without printing and return" if(prnt==F){ eval(parse(text=cmd),local=w.frame.r) return("ok") } err.msg<-"write cmd into report" cmd<-cmd[substring(cmd,1,1)!="#"] if(out.file!=F&&c.c!="-"&&r.f==T&&ucmd!="p"){ sink(out.file,append=T) if(c.c=="+"){ cat("\n@\n") if(any(ucmd==c("."," ","n","s"))){ cat("Sec.no.: ") cat(no) cat("\n") } cat(paste("<","<*>>=\n",sep="")) for(i in 1:length(cmd)){ if(substring(cmd[i],1,1)!="#"){ h.r<-cmd[i] l<-nchar(h.r) h.r<-substring(h.r,1:l,1:l) h.r[h.r=="\n"]<-"\\n" h.r<-paste(h.r,collapse="") cat(h.r) cat("\n") } } } if(c.c=="n"&&no!=0){ if(any(ucmd==c("."," ","n","s"))){ cat("\n@\nSec.no.: ") cat(no) cat("\n") } } if(c.c=="l"){ cat("\n@\nLast sec.cmd: [[") h.r<-cmd[length(cmd)] l<-nchar(h.r) h.r<-substring(h.r,1:l,1:l) h.r[h.r=="\n"]<-"\\n" h.r<-paste(h.r,collapse="") cat(h.r) cat("]]\n") } sink() } err.msg<-"write cmd on display" if(prnt==T){ if(ucmd=="m") print(cmd) } err.msg<-"evaluate cmds without report" if(out.file==F||r.f==F||o.f==F){ # fuer Modifikationen if(any(ucmd==c("<",">","s",".","m"," "))){ h.r<-c(list(cmd),history.r)[1:min(26,1+length(history.r))] SAVE.r("history.r",h.r) } evalresult<-eval(parse(text=cmd),local=w.frame.r) if(ucmd=="<"|ucmd==">"|ucmd=="m"){ if(!missing(evalresult)) print(evalresult) } } err.msg<-"evaluate cmds with report" if(out.file!=F&&o.f==T&&r.f==T){ # fuer Modifikationen if(any(ucmd==c("<",">","s",".","m"," "))){ h.r<-c(list(cmd),history.r)[1:min(26,1+length(history.r))] SAVE.r("history.r",h.r) } sink("s.tmp") cat("\n@\n\\begin{verbatim}\n") sink() DUMP.ON.r("s.tmp") evalresult<-eval(parse(text=cmd),local=w.frame.r) if(ucmd=="<"|ucmd==">"|ucmd=="m"){ if(!missing(evalresult)){ if((!is.character(evalresult[[1]])) || evalresult[[1]] !=" \n" ){ if(!is.null(evalresult)){ print(evalresult) } } } } # next line added for Splus 3.4 / hpux 10.2 10.2.97 sink() DUMP.OFF.r() sink("s.tmp",append=T) cat("\\end{verbatim}\n") sink() ##unix h.r<-unix("cat s.tmp") h.r<-dos("type s.tmp") if(length(h.r)>4||nchar(h.r[length(h.r)])>14){ ##unix unix(paste("cat s.tmp >> ",out.file,sep=""),output=F) dos(paste("type s.tmp >> ",out.file,sep=""),output.to.S=F) } } return("ok") } sec.lines.r<-c(0,0) if(out.file[[1]]=="noreport") out.file<-F r.flag.r<-T c.choice.r<-"+" o.flag.r<-T l.sec.r<-NULL l.sec.no.r<-NULL l.cmd.r<-NULL if(cmds[1]=="") cmds<-F SAVE.r("revive.console.r",c(F,F)) # SAVE.r("revive.console.r",c(T,F)) SAVE.r("history.r",NULL) if(in.file!="noinput"){ sch.flag.r<-T h.r<-nchar(in.file) if( ##unix (".S" !=substring(in.file,h.r-1)) & (".s" !=substring(in.file,h.r-1)) & (".sch"!=substring(in.file,h.r-3)) ) in.file<-paste(in.file,".sch",sep="") ##unix sch.flag.r<- 0 activate next section\n") cat(". activate section again\n") cat("s no activate section no\n") cat("s a:z activate section(s) a:z\n") cat("s ? activate section from a list\n") cat("m modify last job\n") cat("m ? modify job from list of old jobs\n") cat("< cmd activate user cmd\n") cat("< ? activate job from a list of old jobs\n") cat("> cmd activate user cmd, ask for another S-Plus cmd\n") cat("> ? activate cmd from a list of old jobs, ask for ... \n") },{cat("r name open report file name\n") cat("r+(-) start (stop) reporting\n") cat("a text append text to report file\n") cat("e edit report file\n") cat("v show report file\n") cat("p name copy graphic to postscript file name.ps\n") cat("P name repeat job and plot to file name.ps\n") cat("t no copy text between section no-1 and no\n") cat("c+/-/n/l report cmds/nothing/sec.no./last cmd\n") cat("o+(-) report output (no output)\n") },{cat("q quit function revive\n") },{cat("? show flags and parameters\n") },{cat("M start CONSOLE\n") } ) if(choice.r=="A"){ cat("revive() --- written by:\n") cat("H.P. Wolf\n") cat("Uni Bielefeld\n") cat("Universitaetsstr.\n") cat("D-33615 Bielefeld\n") cat("pwolf@wiwi.uni-Bielefeld.de\n") cat("Version: 2.661, 2.2.1998\n") } } if(command.r=="?"){ cat("-----------------------------------------------\n") cat(paste("in.file:",in.file,"\n")) if(out.file[1]==F){ cat(paste("out.file: noreport\n")) } else { cat(paste("out.file:",out.file,"\n")) } cat(paste("text chunk file:",tch.file.r,"\n")) cat("-----------------------------------------------\n") cat(paste("editor:",editor,"\n")) cat(paste("ps.height:",ps.height,"inches\n")) cat(paste("ps.width:",ps.width,"inches\n")) if(cmds[1]==F){ cat(paste("cmds: no cmds\n")) }else{ cat(paste("cmds:",paste(cmds,collapse=" "),"\n")) } cat("-----------------------------------------------\n") cat(paste("report command:",c.choice.r,"\n")) cat(paste("report output:",c("-","+")[1+(T==o.flag.r)],"\n")) cat(paste("report flag:",c("-","+")[1+(T==r.flag.r)],"\n")) cat("-----------------------------------------------\n") } if(command.r==">"|command.r=="<"){ # %NEW% begin if("?"==choice.r){ if(!is.null(history.r)){ h.r<-history.r[1:min(26,length(history.r))] for(i in 1:length(h.r)){ h.r[i]<-substring(paste(unlist(h.r[i]),collapse=";"),1,53) } choice.r<-if(0!=(h.r<-menu(h.r)))unlist(history.r[h.r]) else " " } else choice.r<-" " } # %NEW% end if(choice.r!=" "){ cat(":evaluate user cmd:", choice.r, " \n") l.cmd.r<-choice.r EVALCMD.r(choice.r, prnt=T, out.file=out.file, c.c=c.choice.r,o.f=o.flag.r,r.f=r.flag.r,ucmd=command.r) # %NEW% begin if(command.r==">"){ cat("revive: > "); h.r<-readline(); cmds<-paste(">",h.r) } # %NEW% end } } if(command.r=="m"){ cat(":modify last cmds\n") # neu 04.97 20.11.: ? statt Zahl if("?"==choice.r){ if(!is.null(history.r)){ h.r<-history.r[1:min(26,length(history.r))] for(i in 1:length(h.r)){ h.r[i]<-substring(paste(unlist(h.r[i]),collapse=";"),1,53) } choice.r<-unlist(history.r[menu(h.r)]) } else choice.r<-NULL } else { choice.r<-l.cmd.r } h.r<-length(choice.r) if(h.r>0){ sink("s.tmp") for(i in 1:length(choice.r)){ h.r<-nchar(choice.r[i]) h.r<-substring(choice.r[i],1:h.r,1:h.r) if(any(h.r=="\\")){ rowno.r<-rep("\\",nchar(choice.r[i])+sum(h.r=="\\")) rowno.r[(1:nchar(choice.r[i]))+cumsum(h.r=="\\")]<-h.r choice.r[i]<-paste(rowno.r,collapse="") } cat(choice.r[i]) cat("\n") } sink() ##unix unix(paste(editor," s.tmp"), output=F) dos(paste(editor," s.tmp"), output.to.S=F) h.r<-(scan(file="s.tmp",what=as.list(""),sep="\n"))[[1]] EVALCMD.r(h.r,prnt=T,out.file=out.file,c.c=c.choice.r, o.f=o.flag.r,r.f=r.flag.r,ucmd=command.r) l.cmd.r<-h.r } } if(sch.flag.r==T){ if(command.r=="."){ cat(":repeat last section\n") h.r<-l.sec.r EVALCMD.r(h.r,prnt=T,out.file=out.file,c.c=c.choice.r, o.f=o.flag.r,r.f=r.flag.r,ucmd=command.r,no=l.sec.no.r) l.cmd.r<-l.sec.r } if(command.r=="n"|command.r==" "){ cat(":evaluate next section") if(sec.lines.r[1]==0){ choice.r<-min(abs(sch.i.r[,1])) } else{ choice.r<-min(abs(sch.i.r[l.sec.no.r end of file!\n") } } if(command.r=="s"){ # +++++++ if("?"==choice.r&&in.file!="no.input"){ h.r<-if(is.null(l.sec.no.r)) 1 else l.sec.no.r choice.r<-max(1,min(max(sch.i.r[,1]),l.sec.no.r)) choice.r<-max(choice.r-10,1):min(choice.r+10,max(sch.i.r[,1])) h.r<-sch.i.r[match(choice.r,sch.i.r[,1]),2] h.r<-h.r[!is.na(h.r)] h.r<-substring(paste(sch.r[h.r],sch.r[h.r+1],sch.r[h.r+2],sep=";"),1,73) for(i in 1:length(h.r)) h.r[i]<- paste(substring(h.r[i],1:nchar(h.r[i]),1:nchar(h.r[i])) [substring(h.r[i],1:nchar(h.r[i]),1:nchar(h.r[i]))!="\n"],collapse="") h.r<-menu(h.r) if(h.r==0) choice.r<-" " else choice.r<-choice.r[h.r] } if(choice.r!=" "){ if(all(":"!=substring(choice.r,1:nchar(choice.r),1:nchar(choice.r)))){ cat(":evaluate section ",choice.r,"\n") h.r<-EVALCMD.r(paste("choice.r<-",choice.r),prnt=F, out.file=F,c.c=c.choice.r,o.f=o.flag.r,r.f=r.flag.r,ucmd=command.r) if(h.r=="ok"){ old.lines.r<-sec.lines.r # 2.661 if(!is.na(choice.r<-as.numeric(choice.r)[1])) l.sec.no.r<-choice.r sec.lines.r<-sch.i.r[choice.r==abs(sch.i.r[,1]),2] if(length(sec.lines.r)>=2){ h.r<-sec.lines.r[1]:sec.lines.r[2] h.r<-sch.r[h.r] l.sec.r<-h.r l.cmd.r<-h.r EVALCMD.r(h.r,prnt=T,out.file=out.file,c.c=c.choice.r, o.f=o.flag.r,r.f=r.flag.r,ucmd=command.r, no=l.sec.no.r) } else sec.lines.r<-old.lines.r } } else{ cat(":evaluate sections ",choice.r,"\n") h.r<-EVALCMD.r(paste("choice.r<-",choice.r),prnt=F,out.file=F, c.c=c.choice.r,o.f=o.flag.r,r.f=r.flag.r,ucmd=command.r) if(h.r=="ok"){ if(cmds==F){ cmds<-paste("s",choice.r) } else{ cmds<-c(paste("s",choice.r),cmds) } } } } } # h.r<-apply(outer(sch.i.r[,1],choice.r,"=="),1,"any") if(command.r=="t"){ cat(":copy text ",choice.r,"\n") h.r<-EVALCMD.r(paste("choice.r<-",choice.r),prnt=F, out.file=F,c.c=c.choice.r,o.f=o.flag.r, r.f=r.flag.r,ucmd=command.r) if(h.r=="ok"&&tch.flag.r&&out.file!=F){ if(is.numeric(choice.r)&&choice.r>=1&& choice.r<=max(length(tch.r))){ choice.r<-floor(choice.r) h.r<-tch.i.r[choice.r,] h.r<-paste(tch.r[(h.r[1]+1):(h.r[2]-1)],"\n",sep="") sink(out.file,append=T) if(choice.r==1){ cat("\n% most likely you have to delete the following line") } cat("\n@\n") for(i in 1:length(h.r))cat(h.r[i]) sink() } } } if(command.r=="S"){ cat(":show next section\n") if(sec.lines.r[1]==0){ choice.r<-min(abs(sch.i.r[,1])) } else{ choice.r<-min(abs(sch.i.r[l.sec.no.r end of file!\n") sink() } ##unix unix(paste("more s.tmp"),output=F) write(rep("\n",20),"s.tmp",append=T) dos(paste("type s.tmp |more",sep=""),output.to.S=F) } } if(command.r=="c"){ cat(":define command reporting\n") if(substring(choice.r,1,1)=="+") c.choice.r<-"+" if(substring(choice.r,1,1)=="-") c.choice.r<-"-" if(substring(choice.r,1,1)=="n") c.choice.r<-"n" if(substring(choice.r,1,1)=="l") c.choice.r<-"l" } if(command.r=="o"){ cat(":define output reporting\n") if(substring(choice.r,1,1)=="+") o.flag.r<-T if(substring(choice.r,1,1)=="-") o.flag.r<-F } if(command.r=="i"){ cat(":open input file\n") choice.r<-paste(choice.r," ",sep="") repeat{ if(substring(choice.r,nchar(choice.r), nchar(choice.r))==" "&&nchar(choice.r)>1){ choice.r<-substring(choice.r,1,nchar(choice.r)-1) } else{ break } } if(" "==choice.r){ in.file<-"noinput" } else{ in.file<-choice.r } if(in.file!="noinput"){ sch.flag.r<-T h.r<-nchar(in.file) if( ##unix (".S" !=substring(in.file,h.r-1)) & (".s" !=substring(in.file,h.r-1)) & (".sch"!=substring(in.file,h.r-3)) ) in.file<-paste(in.file,".sch",sep="") ##unix sch.flag.r<- 01){ choice.r<-substring(choice.r,1,nchar(choice.r)-1) } else{ break } } if(" "==choice.r){ out.file<-F } else{ out.file<-choice.r } } } if(command.r=="e"){ cat(":edit report\n") if(out.file!=F){ ##unix unix(paste(editor ,out.file,sep=" "),output=F) dos(paste(editor ,out.file,sep=" "),output.to.S=F) } } if(command.r=="a"){ cat(":append line to report\n") if(out.file!=F){ h.r<-paste("\n@\n",choice.r,sep="") ##unix unix(paste("echo '",h.r,"' >> ",out.file,sep=""),output=F) dos(paste("echo ",h.r," >> ",out.file,sep=""),output.to.S=F) } } if(command.r=="v"){ cat(":show report\n") if(out.file!=F){ ##unix unix(paste("more ",out.file,sep=""),output=F) dos(paste("copy ",out.file," s.tmp"),output.to.S=F) write(rep("\n",20),"s.tmp",append=T) dos(paste("type s.tmp |more",sep=""),output.to.S=F) } } if(command.r=="p"){ cat(":copy plot\n") if(substring(choice.r,1,1)!=" "){ if(".ps"!=substring(choice.r,nchar(choice.r)-2)){ choice.r<-paste(choice.r,".ps",sep="") } dev.copy(postscript,file=choice.r,horizontal=F, height=ps.height,width=ps.width) if(names(dev.cur())=="postscript") dev.off() if(out.file!=F){ sink(out.file,append=T) cat("\n@\nPlot Output\n\n") h.r<-"\\centerline" h.r<-paste(h.r,"{\\psfig{figure=",choice.r, ",height=11cm,width=15cm}}\n\n",sep="") cat(h.r) sink() } } # of if else print("!Error: no name for postscript file specified!\n") } if(command.r=="P"){ cat(":repeat cmd(s) and plot to postscript device\n") if(substring(choice.r,1,1)!=" "){ if(".ps"!=substring(choice.r,nchar(choice.r)-2)){ choice.r<-paste(choice.r,".ps",sep="") } postscript(choice.r,horizontal=F, height=ps.height,width=ps.width) EVALCMD.r(l.cmd.r,prnt=F,out.file=F,c.c="-", o.f=F,r.f=F,ucmd=command.r,no=l.sec.no.r) if(names(dev.cur())=="postscript") dev.off() if(out.file!=F){ sink(out.file,append=T) cat("\n@\nPlot Output\n\n") h.r<-"\\centerline" h.r<-paste(h.r,"{\\psfig{figure=",choice.r, ",height=11cm,width=15cm}}\n\n",sep="") cat(h.r) sink() } } # of if else print("!Error: no name for postscript file specified!\n") } if(command.r=="M"){ cat(":start revive console\n") SAVE.r("revive.console.r",c(T,F)) } if(!any(command.r==c("h","a",">","<"," ",".","q","s","m","i","M","S", "?","r","c","e","o","t","p","P","v"))){ cat("!Error: command undefined!\n") } } } #1: grin<-function( par.matrix, but.matrix, eff.vector, default.expressions, expressions, pic.del=F, center, size ){ #2: #4: if(missing(par.matrix)){ n.pars<-0 i.pars<-NULL } else { if(!is.matrix(par.matrix)) par.matrix<-matrix(par.matrix,ncol=4) n.pars<-nrow(par.matrix) i.pars<-1:nrow(par.matrix) par.act<-par.matrix[,3] names(par.act)<-dimnames(par.matrix)[[1]] par.names<-names(par.act) par.act.old<-par.act } if(missing(but.matrix)){ n.buts<-0 i.buts<-NULL } else { if(!is.matrix(but.matrix)) but.matrix<-matrix(but.matrix,ncol=4) n.buts<-nrow(but.matrix) i.buts<-1:nrow(but.matrix) } n.el<-n.pars+n.buts+1 #:4 #5: if(missing(size)){ size<-matrix(c(0.2,0.3/n.el),n.el,2,T) } if(missing(center)){ center<-cbind(0.85,(1:n.el)/(3*n.el)+0.5) } if(!is.matrix(center))center<-matrix(center,ncol=2,byrow=T) if(nrow(center)RESET") text(coor[n.el,4],coor[n.el,7],"->EXIT") #:11 if(0= coor[,1] & xy.locator[1] <= coor[,5] & xy.locator[2] >= coor[,6] & xy.locator[2] <= coor[,10] choice<-(1:n.el)[choice] if(0coor[1,3]) choice<-"exit" if(choice==n.el & xy.locator[1]0.98)hx<-1 if(!is.inf(par.matrix[choice,4])){ hx<-round(hx*(par.matrix[choice,4]-1))/(par.matrix[choice,4]-1) } hx<-par.matrix[choice,1]+(par.matrix[choice,2]-par.matrix[choice,1])*hx hx<-signif(hx,sig) par.act[choice]<-hx h<-paste(par.names[choice],"<-",par.act[choice]) eval(parse(text=h),local=sys.parent()) } #:20 #21: if(choice>n.pars){ but.choice<-choice-n.pars if(but.matrix[but.choice,3]!=""){ eval(parse(text=but.matrix[but.choice,3]),local=sys.parent()) } } #:21 #22: if(!missing(eff.vector)){ if(choice<=n.pars){ h<-eff.vector[par.names[choice]] } else { h<-eff.vector[but.matrix[but.choice,1]] } if(!is.na(h)) eval(parse(text=h),local=sys.parent()) } #:22 } #8: for(expr in expressions){ eval(parse(text=expr),local=sys.parent()) } #:8 #23: if(1==sys.parent()){ for(i in i.pars) par.act[i]<-get(par.names[i],where=1) } else { for(i in i.pars) par.act[i]<-get(par.names[i],frame=sys.parent()) } if(0Uni","11:Bus->Uni","12:Fahrrad->Uni","13:Fuss->Uni", "14:Mathe.LKurs","15:Abi.Note","16:Partei"))) "frabo96"<- structure(.Data = c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17, 18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35, 36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53, 54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71, 72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89, 90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105, 106,107,108,109,110,111,112,113,114,115,116,117,118,119, 120,121,122,123,124,125,126,127,128,129,130,131,132,133, 134,135,136,137,138,139,140,141,142,143,144,145,146,147, 148,149,150,151,152,153,154,155,156,157,158,159,160,161, 162,163,164,165,166,167,168,169,170,171,172,173,174,175, 176,177,178,179,180,181,182,183,184,185,186,187,188,189, 190,191,192,193,194,195,196,197,198,199,200,201,202,203, 204,205,206,207,208,209,210,211,212,213,214,215,216,217, 218,219,220,221,222,223,224,225,226,227,228,229,230,231, 232,233,234,235,236,237,238,239,240,241,242,243,244,245, 246,247,248,249,250,251,252,253,254,255,256,257,258,259, 260,261,262,263,264,265,1,1,1,1,1,1,4,4,2,1,1,1,4,4, 4,4,1,1,1,1,1,2,1,1,1,1,1,4,1,1,1,1,1,1,-1,1,1,2, 1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,2,1,1,2,2,1,1,1,1,1,1,1,2,1,1,1,1,1,2, 1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,1,1,2,2,1,2,1, 1,1,1,1,1,1,1,1,1,1,2,1,1,1,-1,1,1,1,1,1,1,2,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2, 1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,2, 1,2,1,1,1,1,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,2,2,1, 1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1, 4,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,-1,0,1,0,0,1,1,0, 1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,1,-1,0,1, 1,0,0,1,1,1,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0, 0,0,0,0,0,0,1,0,0,1,0,1,1,0,0,0,1,0,1,0,1,1,0,1, 1,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0, 0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,1,1,0,1,1,1,0,0, 0,0,0,0,0,0,1,1,1,0,1,1,0,0,0,0,1,1,0,0,0,1,1,1, 0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0, 1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,1,0,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,1, 0,0,0,1,0,0,0,0,0,0,1,0,23,21,22,19,20,21,21,22,20, 20,22,21,20,20,19,26,21,20,25,26,22,19,21,20,20,19,23, 20,21,22,20,21,18,21,20,24,24,19,23,24,20,20,20,21,19, 20,23,20,20,21,20,20,24,19,21,20,28,24,20,20,23,21,20, 21,19,21,21,20,23,20,22,21,23,19,20,23,21,21,21,20,21, 23,20,22,21,28,21,22,23,22,22,20,22,21,19,19,19,20,20, 21,24,19,22,20,23,20,21,22,23,20,23,20,18,21,21,24,23, 21,21,20,20,24,19,23,22,21,20,24,21,19,21,20,23,20,20, 20,22,20,20,20,20,21,20,21,21,20,20,22,23,19,20,20,19, 23,27,21,21,24,27,20,21,21,20,19,19,19,21,19,22,19,20, 24,21,20,23,21,21,27,20,18,19,20,24,20,29,26,25,22,24, 26,30,20,20,23,21,20,22,22,21,25,22,20,21,22,20,19,19, 22,23,20,19,19,20,20,19,22,20,27,27,20,24,21,20,21,20, 24,22,23,23,20,20,21,21,21,20,22,19,19,19,23,20,23,21, 23,21,20,20,19,21,24,20,20,20,20,21,20,20,20,21,19,22, 21,20,20,22,171,173,176,170,168,175,198,170,177,198,170, 173,201,168,205,176,184,183,184,180,190,180,172,182,176, 168,176,180,184,190,188,177,172,160,186,184,168,168,183, 180,166,180,171,170,175,175,180,180,191,176,165,184,186, 180,164,180,182,178,183,178,178,188,170,179,180,182,165, 182,197,193,181,178,180,183,175,179,182,188,183,173,175, 176,182,178,171,173,190,180,178,180,187,170,186,181,165, 190,174,177,180,192,175,169,187,165,193,181,180,182,163, 169,183,182,170,175,184,159,178,176,180,190,175,180,170, 173,185,183,187,186,168,170,175,181,180,182,180,175,186, 170,185,168,185,191,192,160,182,185,161,185,182,170,170, 180,160,173,164,170,187,190,180,192,187,186,168,167,163, 175,194,164,170,177,190,185,176,175,167,179,195,180,180, 166,174,180,190,160,186,184,182,185,180,180,181,182,172, 166,185,178,183,183,180,177,191,196,187,183,196,170,164, 196,167,192,178,176,169,182,196,170,180,169,184,182,185, 183,177,185,179,175,176,180,183,188,188,175,172,180,170, 185,172,165,183,175,185,160,188,186,171,178,182,185,188, 194,180,165,161,180,185,188,178,176,178,175,192,171,190, 171,169,60,66,68,70,60,69,84,55,63,85,59,63,93,62,130, 69,72,78,74,70,92,55,60,76,55,59,63,65,67,82,75,74,65, 55,80,78,68,62,75,80,57,70,59,65,-1,-1,70,70,155,74,54, 83,83,90,68,78,73,70,75,74,73,83,85,70,71,90,60,75,107, 96,65,71,73,75,73,62,75,88,92,58,60,73,78,78,62,68,86, 71,80,65,72,50,73,77,53,81,62,55,75,100,60,51,86,55,81, 63,67,79,50,57,76,70,60,69,95,52,79,65,78,75,72,75,55, 55,79,79,75,72,57,65,64,73,80,85,78,60,80,67,66,67,75, 84,130,52,80,80,49,76,82,60,52,67,54,63,54,55,91,93,76, 83,78,74,64,58,51,55,80,58,55,63,82,75,64,56,75,71,81, 74,56,55,65,72,87,53,72,80,61,75,67,70,73,91,75,56,76, 62,88,87,75,75,85,95,75,80,76,70,52,95,48,90,80,69,68, 60,88,75,72,62,76,79,75,77,85,77,69,70,65,78,73,86,74, 60,77,65,65,80,62,54,63,65,69,60,86,80,58,60,81,62,82, 82,74,53,57,77,75,77,63,80,61,75,78,65,83,60,70,41,41, 41,40,38,41,46,49,41,46,39,39,48,39,50,43,44,42,43,43, 45,40,40,43,42,39,42,42,43,44,43,42,42,38,43,45,39,39, 43,41,39,41,39,42,-1,-1,42,42,49,43,39,45,44,45,39,43, 44,42,45,42,42,44,41,42,44,45,41,-1,48,46,42,42,43,45, 43,43,43,46,43,40,41,43,44,44,42,41,44,42,42,43,43,38, 43,44,37,45,39,38,43,46,41,38,43,39,46,40,39,44,37,39, 43,43,38,43,44,37,44,42,43,45,42,44,42,37,43,44,45,42, 38,41,41,44,44,40,44,42,43,42,44,40,43,44,46,37,44,45, 38,45,44,40,38,42,40,41,37,39,46,46,43,46,43,44,41,38, 37,39,43,39,39,43,45,-1,43,38,38,42,45,43,40,38,38,43, 45,38,42,43,42,43,42,-1,-1,44,42,39,46,43,45,45,43,43, 45,49,45,45,46,42,36,45,36,45,42,42,42,42,45,42,42,40, 44,41,43,45,45,45,43,43,42,43,42,44,46,42,42,41,39,42, 40,39,42,41,45,37,43,45,40,43,45,44,46,45,43,38,37,43, 43,42,39,43,43,43,43,41,44,-1,39,1,1,1,1,1,4,1,2,1, 1,4,0,3,2,1,1,6,1,2,1,0,0,1,1,0,0,2,1,2,1,0,0,2, 3,0,1,1,1,0,1,0,1,1,1,1,2,2,1,1,1,3,4,3,1,2,2,3, 0,1,1,2,2,0,2,3,7,3,1,1,1,2,3,1,1,1,3,0,1,1,0,2, 0,3,1,1,1,0,1,1,4,1,3,1,3,1,1,5,3,3,2,1,1,2,1,2, 1,1,3,2,2,-1,0,0,1,1,1,1,1,0,1,4,2,2,0,1,0,1,3,1, 1,1,3,0,1,1,1,1,1,3,2,2,0,2,3,1,1,1,1,0,1,1,1,3, 0,0,3,4,1,1,2,0,0,5,3,1,2,2,1,0,3,1,1,2,1,0,1,1, 1,1,2,2,2,1,3,1,0,1,1,0,1,4,0,1,0,1,1,1,4,1,4,2, 1,1,1,1,2,1,1,0,1,1,5,2,0,2,5,2,1,3,1,1,4,4,1,0, 3,1,1,1,1,1,1,1,3,0,1,2,3,0,1,0,1,1,3,0,0,3,2,0, 1,1,4,4,2,0,1,3,3,2,0,1,2,2,0,1,2,2,2,1,1,1,1,1, 1,2,5,1,1,1,2,1,1,1,2,2,1,1,1,1,1,1,1,2,1,1,1,1, 1,2,1,3,1,2,1,1,1,2,1,1,-1,-1,3,2,1,1,3,1,3,2,2, 3,1,1,1,1,3,2,1,3,1,8,3,1,3,2,3,3,2,1,2,1,1,1,2, 1,2,1,1,1,2,1,1,1,2,5,2,4,1,3,1,1,6,4,3,2,2,2,1, 1,3,1,1,1,3,3,-1,1,1,2,1,2,1,2,1,1,4,2,3,1,1,1,2, 3,2,2,1,2,1,1,1,2,1,1,1,1,1,1,2,4,1,2,1,2,2,2,2, 2,1,1,1,2,4,2,1,1,1,1,5,4,2,3,1,2,1,2,2,1,1,1,1, 2,1,1,1,1,3,1,1,1,2,1,1,2,1,1,1,1,1,1,2,2,1,5,2, 1,2,1,1,1,1,1,2,1,1,1,1,3,3,1,3,5,3,1,3,1,2,5,4, 2,1,3,1,2,1,1,1,1,2,1,1,1,1,1,1,2,1,2,2,1,1,1,1, 3,1,2,2,3,4,1,1,2,2,4,1,1,2,1,2,1,2,0,0,0,0,0,0, 0,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0, 1,0,1,1,0,0,1,0,1,0,0,0,0,1,0,1,0,0,0,1,1,1,1,1, 1,0,1,1,1,1,0,0,1,0,1,1,0,0,0,0,1,0,0,1,0,0,1,0, 0,0,0,1,1,0,0,0,0,0,1,0,1,1,0,0,1,1,1,0,0,0,0,0, 0,1,0,1,0,1,0,1,0,1,0,1,1,0,0,1,1,0,0,0,0,1,1,1, 1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1,0,1,0,0,0,0, 1,1,0,1,1,0,1,0,0,0,0,1,1,0,0,0,1,1,1,1,1,1,0,0, 0,1,1,0,1,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,1,1,1,0, 1,1,1,0,0,0,1,0,1,0,1,1,0,0,0,1,0,1,1,1,1,1,1,1, 1,1,0,1,0,0,0,0,0,1,1,1,0,1,0,0,1,1,0,0,1,0,0,0, 1,0,0,0,1,1,1,0,1,1,0,0,0,0,0,0,1,1,0,1,0,0,0,0, 0,1,0,1,0,0,0,1,0,1,0,1,1,0,0,0,1,0,1,1,0,0,0,1, 0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,0,0,0,0, 0,1,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0,1,0,0,0,0,0, 1,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,1,0,0,0,1,0,1, 1,1,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,1,0,0,1,0,0,0, 1,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,0,0,0,1,0,0,1,1, 0,0,1,0,0,0,0,0,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,1, 1,0,0,1,0,0,0,1,0,1,0,0,1,0,0,1,0,0,1,1,1,0,1,1, 1,1,0,1,1,1,1,1,0,1,1,0,0,0,0,0,1,1,1,1,0,0,0,1, 0,1,0,1,0,0,1,0,1,1,0,1,0,0,0,0,1,0,0,1,0,0,0,1, 0,0,0,0,0,1,1,1,0,0,1,0,1,1,1,0,1,0,0,0,2,1,3,2, 2,2,2,1,2,2,2,4,1,1,2,2,1,1,2,2,1,1,2,1,1,3,1,3, 1,1,1,2,4,1,1,2,2,1,1,1,2,1,3,1,4,4,2,2,1,1,2,2, 1,1,2,1,1,1,1,3,5,2,1,2,1,2,4,1,1,1,3,3,3,2,2,4, 1,2,1,2,2,1,1,1,1,2,1,4,1,1,2,4,1,1,1,2,2,3,1,2, 1,1,2,2,1,1,1,4,1,4,2,1,2,2,2,4,4,2,1,1,2,1,1,1, 2,2,1,1,1,2,2,2,2,1,2,2,2,2,1,1,1,3,3,1,2,1,2,1, 3,1,1,1,1,1,1,2,2,2,1,1,1,2,1,4,2,2,2,2,1,2,3,2, 2,1,1,1,1,2,1,2,1,2,1,1,1,1,2,4,1,4,2,1,2,1,1,1, 2,2,2,2,1,1,1,1,1,2,4,1,1,1,2,1,2,2,1,1,1,1,1,4, 1,2,1,3,1,1,4,1,1,2,1,1,1,2,2,1,2,2,1,1,2,2,1,1, 1,1,1,2,2,2,1,1,1,1,1,1,4,2,1,1,1,2,1,1,1,1,1,1, 0,1,0,0,1,1,1,0,1,0,0,0,-1,0,1,0,0,1,0,1,1,1,0,0, 0,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,0, 0,1,1,0,1,1,0,1,0,1,0,1,0,1,0,0,1,1,1,0,0,1,0,0, 0,1,0,1,1,0,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,0,0,1, 1,1,0,0,0,0,1,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,0,1, 1,1,0,1,1,1,0,1,1,1,1,0,0,0,0,1,0,1,1,1,0,0,1,1, 1,1,0,1,1,0,1,1,0,0,1,1,0,1,1,1,0,0,0,0,0,1,0,0, 0,1,1,1,0,1,1,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,1,1, 1,0,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,0,1,0,0,1,1,1, 0,1,0,1,0,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,0,0,1, 1,0,1,0,1,0,0,1,1,0,0,1,1,0,0,1,0,1,0,1,1,1,100, 25,100,42,40,5,100,0,40,40,0,40,60,15,45,999,30,35,60, -1 ,150,90,15,120,80,20,0,10,78,38,93,100,38,0,5,35,35, 20,0,700,3,20,20,0,8,0,0,10,60,50,20,30,45,10,6,200, -1 ,2,50,90,60,60,700,20,70,86,42,120,80,50,40,55,300,170, 0,0,50,40,200,50,0,60,270,4,40,120,120,150,70,15,80,0, 10,0,30,20,30,3,300,50,10,15,8,10,60,15,30,50,20,15,0, 40,110,10,150,100,50,70,60,50,123,50,40,40,50,200,60, 100,20,40,40,34,40,200,25,30,25,3,90,70,10,130,130,8, -1,20,10,130,50,30,100,140,55,60,50,150,160,40,50,50,70, 30,40,3,30,20,50,40,80,30,20,143,200,35,20,40,50,40,50, 32,40,50,270,0,30,100,30,25,25,200,200,150,50,25,80,65, 30,150,80,300,50,200,60,30,150,100,10,8,20,100,60,150, 30,200,40,0,93,0,60,40,65,12,13,70,50,250,220,45,500, 80,150,30,130,160,100,80,30,30,20,150,75,70,100,30,120, 450,30,20,50,100,50,0,20,170,150,25,50,15,112,45,350,0, 40,60,40,6.8499999999999996,8.5999999999999996,10, 2.3399999999999999,3.1499999999999999,7.8300000000000001, 7.4299999999999997,0,22,4.4000000000000004,3.2400000000000002, 8.5600000000000005,9.0600000000000005,20,6.2699999999999996, 8.2300000000000004,9.0999999999999996,5.9500000000000002,10,10,2, 21.300000000000001,13.41,22.710000000000001,9.0800000000000001, 7.8300000000000001,2.0499999999999998,4,3.2200000000000002,3.23, 6.2999999999999998,14.720000000000001,5.8700000000000001,21,1.05, 9.5,6,-1,-1,8.4000000000000004,9.0399999999999991,2,-1, 0.050000000000000003,-1,-1,2,21.16,25.66,20,2, 5.7000000000000002,4.5,8.8000000000000007,7.2599999999999998, 0.10000000000000001,9.75,9.2200000000000006,52,7.2999999999999998, -1 ,20,8.9100000000000001,9.7300000000000004,4.8200000000000003, 8.6199999999999992,3,6.0999999999999996,10.609999999999999,13.42, 1.5700000000000001,4.2800000000000002,7.0599999999999996,20, 6.4000000000000004,5,4.2999999999999998,7.3499999999999996,7,10,2, 10,9,4.5,5.5999999999999996,5.4100000000000001,4.7599999999999998, 3.5,12.5,3.4300000000000002,7.1399999999999997,6, 6.0800000000000001,3,2.9500000000000002,20,1.6000000000000001,-1, 2.8999999999999999,7.5,7.71,7,6.5,4.2999999999999998, 6.0199999999999996,8.9000000000000004,12,10.09,4.0499999999999998, 5,-1,7.1200000000000001,7.5999999999999996,9.6500000000000004,7, 0.46000000000000002,8.5800000000000001,21.539999999999999,8.75,9, 3.8300000000000001,7.0800000000000001,8.3499999999999996,12.73, 11.43,6.3499999999999996,4.7999999999999998,6.96,-1, 8.1799999999999997,4.6500000000000004,15,18,2,3.7999999999999998, 7,1,4,7.0599999999999996,7,7.96,4.3799999999999999, 7.4800000000000004,5,8.2200000000000006,5.2000000000000002,10,2.5, 7,9.1999999999999993,13,0.45000000000000001,0,5,10,15.74,19.43, 12,7,20,10,20,1,7.6200000000000001,9,12,0.5, 5.5499999999999998,4.4699999999999998,14,12.5,9.5999999999999996, 13,5,6.5,22.32,17,3.3700000000000001,20,0.59999999999999998,15, 11.199999999999999,8.5500000000000007,5.3499999999999996,16.75, 7.7400000000000002,6.2000000000000002,2.7599999999999998, 3.3999999999999999,10,3.1000000000000001,0.90000000000000002, 0.94999999999999996,5,5.4000000000000004,4.7400000000000002,3.5, 3.25,8.3499999999999996,14.800000000000001,8,14,6, 4.2000000000000002,2.5,13.449999999999999,4.5,5,5, 12.640000000000001,5.0999999999999996,10.5,6,4.9000000000000004,4, 0.10000000000000001,1.8,0,10.300000000000001,6,8.7200000000000006, 7.7000000000000002,15,7,9,11.99,0.33000000000000002,19,7,13.73, 7,25,7,4.5,6.7400000000000002,16.829999999999998,7, 4.6799999999999997,4.6900000000000004,5,13,2.6200000000000001,0.01, 15,11.960000000000001,2,20,6,3.1299999999999999,12,9,9, 10.300000000000001,9.4000000000000004,7.5,5,3,27,20,5, 7.3300000000000001,15,6.4199999999999999,5.3799999999999999, 5.2999999999999998,2,1,2,2,3,1,2,1,3,2,2,2,1,1,2,1,2, 2,3,1,1,3,1,1,2,4,1,3,2,2,2,2,2,2,3,3,3,3,2,1,5, 3,2,2,2,2,3,2,2,1,3,2,3,1,2,2,5,4,1,2,2,1,2,2,2, 2,2,1,2,2,1,3,2,3,2,5,2,4,1,2,2,1,1,2,2,4,2,3,2, 2,1,1,2,3,2,2,2,4,5,1,1,3,3,2,3,3,3,1,2,3,3,1,2, 1,2,5,3,2,3,1,2,1,1,2,2,2,1,1,4,3,2,3,2,2,3,2,2, 1,1,1,3,2,2,2,2,1,3,2,2,3,2,2,3,2,3,1,3,2,3,3,2, 5,2,2,2,2,2,4,3,3,1,2,1,3,3,5,1,1,3,2,1,1,1,3,3, 1,3,1,3,2,3,2,3,2,2,3,2,1,1,2,1,2,1,1,1,1,2,2,1, 3,2,2,3,2,3,1,3,1,2,2,2,1,2,1,4,4,2,2,5,2,5,1,2, 4,3,2,2,3,1,1,2,3,3,2,2,2,3,4,2,2,2,1,1,2,1,5,2, 1,2,2,1,1,1,4,2,1,0,1,0,0,1,1,0,1,0,0,0,1,1,0,-1, 0,1,0,0,1,0,0,0,1,0,1,1,0,0,0,1,1,0,0,0,0,0,1,0, 1,0,0,0,1,1,1,1,1,1,0,0,0,1,0,1,0,0,1,1,1,0,1,1, 0,0,0,0,0,0,0,0,1,0,1,1,0,1,1,0,0,1,0,0,1,0,0,0, 0,1,1,1,1,0,1,0,0,1,1,0,0,1,1,1,0,0,1,0,0,0,0,0, 0,1,0,0,1,1,1,0,1,0,1,1,0,0,1,0,1,0,1,1,0,0,0,1, 1,1,0,0,1,1,0,0,1,0,0,0,1,0,1,1,0,0,0,0,1,1,1,1, 0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,1,1,0,0,1,0,0, 1,1,0,1,0,0,0,0,1,0,0,0,0,0,1,1,1,0,0,1,0,0,0,0, 0,0,1,1,0,0,1,0,1,0,0,0,1,0,0,1,0,1,0,0,0,1,0,0, 0,0,1,0,1,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,1,1, 0,1,1,0,1,0,0,0,1,2,2,4,1.3,3,-1,1,4, 3.2999999999999998,3,3,3.2999999999999998,2,2,1,-1,3,2.5,5, -1,5,4,3,4,3,4,5,1,1,4,4.2999999999999998, 3.2999999999999998,2,4,-1,3,4,3.2999999999999998,5,5,1.3,3,1, 2,1,-1,-1,3,4,4,1.7,3,3,1,4,4,3,5,2,2,3,2, 3.2999999999999998,2,3,2.2999999999999998,4,5,2,3,1,3,3,6,3, -1,-1,4,1,2.7000000000000002,2,4,-1,2,3,-1,3,3,3,4,1, 2.7000000000000002,3,3,3,2,3,1.7,4,4,2,1.3, 2.2000000000000002,1,4,3,1.7,3,4,3,3,4.2999999999999998,3,3, 4,3,3,4,3,4.7000000000000002,4,-1,4,3,2,5,2,-1, 3.2999999999999998,2,3.7000000000000002,2.7000000000000002,-1,4,3, 1,1.7,4,4,3,1.3,4,2,6,2.2999999999999998,3,4,3,-1, 3.7000000000000002,3,4,3,3,-1,3,4,2,3,3,2.7000000000000002, 2.2999999999999998,2,3,3,-1,3,1.3,2.7000000000000002, 2.2999999999999998,1.3,2.2999999999999998,2.2999999999999998,1.7,3, 2,5,4,-1,-1,3,1,-1,1,1,2,1,3,-1,1.5,-1,2, 3.7000000000000002,3,3.2999999999999998,4,2,-1,3,4,3,4,-1,2, 2,3,3,-1,3,3,4,3.7000000000000002,6,1,2,4.7000000000000002, 2.2999999999999998,-1,-1,6,4,1.3,5,2.7000000000000002,1.3, 3.2999999999999998,4,-1,4,-1,3,4,3,3,1.7,5,3,2, 3.7000000000000002,3.2999999999999998,1.7,2,3,3,1,3, 4.2999999999999998,4,2.2999999999999998,3,4,2.2999999999999998,3, 2.7000000000000002,2.7000000000000002,1.3,2.7000000000000002, 3.7000000000000002,4,3,5,3,3,5,3,2.1000000000000001, 2.2000000000000002,2.8999999999999999,2.7000000000000002, 2.6000000000000001,2.8999999999999999,1.3,3.3999999999999999,2,3, 3.2999999999999998,2,1.8999999999999999,2.7000000000000002, 2.2999999999999998,-1,2.7999999999999998,2.5,3.1000000000000001, 3.2999999999999998,3,2,2.8999999999999999,3,2.6000000000000001, 2.2000000000000002,3.6000000000000001,1.3,2.6000000000000001, 3.2999999999999998,3.2000000000000002,2.5,2.3999999999999999, 3.3999999999999999,3.3999999999999999,2,2.7000000000000002, 2.1000000000000001,3.5,2.5,1.5,2.8999999999999999,1.5,3,-1,-1, -1 ,2.6000000000000001,3,3.7999999999999998,2.7000000000000002, 2.2000000000000002,3,1.5,3,2.5,3,3.1000000000000001, 2.7999999999999998,2.6000000000000001,3.2000000000000002, 2.2000000000000002,3.2999999999999998,1.3,2.8999999999999999, 3.6000000000000001,3.3999999999999999,3.6000000000000001,3, 2.7000000000000002,1.2,2.5,3,3,3.1000000000000001,-1,3.5, 2.2000000000000002,3,3.2999999999999998,-1,3.2000000000000002,3, 2.6000000000000001,2.5,3.2000000000000002,3.3999999999999999, 2.2999999999999998,3.1000000000000001,2.8999999999999999,1.3, 2.7999999999999998,2.7999999999999998,2.7000000000000002, 2.7000000000000002,1.8999999999999999,2.6000000000000001, 1.6000000000000001,3.5,2.8999999999999999,3,1.8,2.3999999999999999, 1.8,2,2.8999999999999999,2.2000000000000002,2.6000000000000001, 2.8999999999999999,2.8999999999999999,3.2000000000000002, 3.7000000000000002,2.1000000000000001,3,3.3999999999999999, 3.7000000000000002,3.5,3.6000000000000001,2.2999999999999998, 2.7999999999999998,3,3.5,3.3999999999999999,3.2000000000000002, 2.2999999999999998,3.2999999999999998,3.2999999999999998,3, 2.6000000000000001,2.5,2.7999999999999998,2.7000000000000002, 2.7999999999999998,3.2000000000000002,3,1.3,2.6000000000000001, 3.3999999999999999,2.5,3.7000000000000002,1.7,3.2999999999999998, 3.3999999999999999,2.8999999999999999,2.5,2.7999999999999998, 2.1000000000000001,2.5,2.2999999999999998,2.7000000000000002, 3.1000000000000001,3.2999999999999998,2.1000000000000001, 2.8999999999999999,1.6000000000000001,3,3.5,2.3999999999999999,2.5, 2.8999999999999999,2.7000000000000002,1.8,1.7,2.7999999999999998,3, 2.2000000000000002,3.1000000000000001,1.6000000000000001, 3.2999999999999998,2.1000000000000001,1.8999999999999999, 2.6000000000000001,2.7000000000000002,3.2999999999999998, 2.7000000000000002,2.2999999999999998,3.2000000000000002,4, 2.8999999999999999,2.7000000000000002,2.7999999999999998,1.7, 3.3999999999999999,1.3,2,2.2999999999999998,1.6000000000000001,3, 2.7999999999999998,1.2,3.6000000000000001,2,3.2000000000000002, 2.7000000000000002,2.7000000000000002,2.2999999999999998,3, 2.2000000000000002,2.7000000000000002,3.1000000000000001, 2.8999999999999999,3.2999999999999998,2.2000000000000002,2, 2.2999999999999998,2.2000000000000002,3.2999999999999998, 2.1000000000000001,3,3,3,3.2999999999999998,3.2999999999999998, 1.8999999999999999,2.7999999999999998,3.2999999999999998, 3.3999999999999999,2.5,3.2000000000000002,2.7999999999999998, 2.7000000000000002,3,3.5,3.2000000000000002,2.2999999999999998,3, 3.6000000000000001,3.3999999999999999,2.8999999999999999, 2.6000000000000001,3.5,3.5,3.2000000000000002,3.6000000000000001,2, 3.6000000000000001,2.7999999999999998,1.8999999999999999, 2.1000000000000001,3.1000000000000001,2.2000000000000002,2, 3.3999999999999999,3.1000000000000001,2.7999999999999998, 2.6000000000000001,3.2000000000000002,2.7999999999999998,2.5, 2.7000000000000002,2.2999999999999998,3.2999999999999998,3, 3.2999999999999998,2.7999999999999998,3.2999999999999998, 2.7000000000000002,3.2000000000000002,2.7999999999999998, 3.2999999999999998,2.6000000000000001,2.8999999999999999, 3.2999999999999998,3.2999999999999998,3.2999999999999998,1,0,0,0, 0,1,1,0,1,0,0,1,1,1,1,-1,1,1,1,1,1,1,0,1,1,0,0,1, 1,0,0,0,1,0,0,1,0,1,0,1,1,0,0,1,1,1,0,1,1,0,0,0, 1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,1,0,0,0, 0,1,0,1,1,0,1,0,0,1,1,0,1,1,0,0,1,0,1,0,1,1,1,0, 0,1,0,0,0,0,0,0,0,1,1,0,1,1,1,1,1,0,1,0,1,0,0,1, 1,1,1,1,1,1,1,0,0,1,0,1,0,0,1,1,0,1,1,0,1,1,0,1, 0,0,1,1,0,0,1,1,1,1,1,0,1,0,0,1,1,0,0,0,1,0,0,0, 1,1,0,0,0,0,0,0,1,1,1,0,1,1,1,0,0,0,1,1,1,0,0,1, 1,1,1,1,0,1,1,1,1,0,0,1,0,0,0,0,0,1,1,1,1,1,1,0, 1,0,1,0,1,1,0,1,1,1,0,1,1,0,0,1,0,0,0,1,1,0,0,0, 0,1,1,0,0,0,0,1,0,0,1,1,0,1,0,1,0,1,1,1,0,0,0,0, 0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,-1,1,0,0,1,1, 1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,1,0,0,0,-1,1,1,0,0, 0,-1,-1,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0, 1,0,0,1,0,0,0,1,1,1,1,1,1,0,-1,1,0,0,0,0,1,0,0,0, 0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,1,1,0,0,1,0,1,0,0, 1,0,1,1,0,0,-1,-1,0,1,0,1,0,0,0,0,1,0,0,0,0,1,-1, 0,-1,0,1,1,0,0,0,0,0,0,0,1,-1,0,-1,1,1,0,1,0,0,0, 1,0,1,-1,1,-1,-1,1,1,0,-1,0,0,1,1,0,0,1,0,0,0,0,0, -1,0,0,-1,0,0,1,1,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0, 0,1,1,-1,0,0,0,1,1,0,1,0,0,1,0,1,0,1,1,1,0,0,0,0, 0,0,1,1,-1,0,1,1,0,-1,1,0,0,-1,1,0,0,0,0,1,0,1,0, 1,1,0,0,1,2,5,3,-1,1,3,1,1,1,2,3,2,3,2,1,-1,1,1, 1,1,-1,2,2,2,4,1,5,3,2,3,2,2,2,2,2,1,1,1,1,3,3,2, 4,2,1,-1,2,2,3,1,2,-1,-1,2,1,3,1,1,1,5,1,2,2,2,3, 2,3,1,2,3,4,2,2,2,3,1,4,2,3,-1,1,2,2,3,2,1,1,-1, 1,1,2,1,3,1,1,2,1,2,2,3,2,1,2,1,2,4,3,5,1,4,1,2, 1,1,2,1,2,2,1,1,2,1,2,3,3,1,1,-1,-1,2,2,2,3,2,1, 2,1,1,3,2,2,1,2,-1,2,2,2,3,2,1,3,1,2,3,1,1,2,-1, 2,-1,4,2,2,3,1,1,3,2,5,2,3,1,-1,-1,2,3,1,-1,2,2,2, 2,1,4,3,3,1,2,2,2,-1,1,1,-1,2,2,1,3,2,3,3,1,1,1, 2,2,2,2,2,2,3,1,1,1,3,1,-1,1,1,2,2,2,1,1,2,3,3,1, 2,1,1,2,3,2,3,1,3,2,3,1,2,-1,2,1,3,1,-1,3,2,1,-1, 2,1,2,3,5,1,1,3,2,1,1,4,1,1,4,3,4,8,1,8,1,6,-1,8, 1,8,7,2,4,1,4,1,8,1,8,1,2,2,6,1,4,8,3,8,1,7,8,7, 7,8,8,1,1,8,8,3,2,8,8,8,1,2,2,7,7,7,2,8,1,8,4,8, 8,4,8,8,8,2,1,6,2,1,4,8,8,7,1,1,-1,1,2,1,-1,7,7, 4,1,3,2,3,1,2,4,3,8,1,7,7,7,2,3,1,2,7,1,2,7,1,1, 4,3,4,1,4,1,8,3,3,2,8,4,1,7,4,8,8,4,4,1,4,2,8,8, 1,1,8,2,7,3,8,8,1,8,3,4,4,2,2,1,8,1,8,1,7,7,2,1, 4,1,7,7,1,1,4,4,7,-1,1,2,1,8,2,8,8,1,8,8,8,2,1,4, 1,8,8,3,1,8,1,1,4,1,1,1,3,1,8,-1,3,3,4,2,8,3,1,1, 8,8,1,1,1,1,1,2,1,8,2,2,2,2,2,8,4,7,3,2,3,1,1,7, 2,7,4,1,1,8,8,3,3,1,2,2,4,2,2,8,3,1,2,1,2,3,4,7, 8,4,4,8,4,4,2,7,7,4,1,7,7,4,4),.Dim = c(265,23), .Dimnames = list(c("1","2","3","4","5","6","7","8","9","10", "11","12","13","14","15","16","17","18","19","20","21","22", "23","24","25","26","27","28","29","30","31","32","33","34", "35","36","37","38","39","40","41","42","43","44","45","46", "47","48","49","50","51","52","53","54","55","56","57","58", "59","60","61","62","63","64","65","66","67","68","69","70", "71","72","73","74","75","76","77","78","79","80","81","82", "83","84","85","86","87","88","89","90","91","92","93","94", "95","96","97","98","99","100","101","102","103","104","105", "106","107","108","109","110","111","112","113","114","115", "116","117","118","119","120","121","122","123","124","125", "126","127","128","129","130","131","132","133","134","135", "136","137","138","139","140","141","142","143","144","145", "146","147","148","149","150","151","152","153","154","155", "156","157","158","159","160","161","162","163","164","165", "166","167","168","169","170","171","172","173","174","175", "176","177","178","179","180","181","182","183","184","185", "186","187","188","189","190","191","192","193","194","195", "196","197","198","199","200","201","202","203","204","205", "206","207","208","209","210","211","212","213","214","215", "216","217","218","219","220","221","222","223","224","225", "226","227","228","229","230","231","232","233","234","235", "236","237","238","239","240","241","242","243","244","245", "246","247","248","249","250","251","252","253","254","255", "256","257","258","259","260","261","262","263","264","265"), c("1:lfd.Nr","2:Fach","3:Geschlecht","4:Alter","5:Groesse", "6:Gewicht","7:Schuhgroesse","8:Geschwister","9:?te Kind", "10:Rauchen","11:bei Eltern","12:Art->Uni","13:Autobesitz","14:#CD", "15:Bargeld","16:Coca-Cola","17:Mathe.LKurs","18:Abi.Mathe.Note", "19:Abi.Note","20:Bi gewuenscht","21:Film","22:Film-Urteil", "23:Partei")),class = "matrix") #:7 #8: frabo97<- structure(.Data = c(2,2,1,2,1,1,2,2,2,1,2,2,2,1,1,2,1,1,2,2, 1,2,2,2,1,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2,2,2, 1,1,2,1,1,1,1,1,1,2,2,2,1,1,2,1,2,2,2,2,2,1,1,2, 2,2,1,2,2,2,2,2,1,2,2,1,1,1,2,1,1,1,2,1,1,2,2,2, 2,1,2,1,2,2,2,1,2,2,2,1,2,2,2,2,2,2,2,2,1,1,2,1, 2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,1,2,1,2,2,2,2,1,1, 2,2,2,2,2,2,1,2,2,2,1,2,1,2,2,2,2,1,1,1,2,2,1,1, 1,1,2,2,2,2,2,1,2,2,2,2,2,1,1,2,1,1,1,2,2,1,1,2, 2,2,2,2,2,2,2,188,185,176,182,135,170,172,175,183,167, 173,174,175,160,167,180,170,170,186,175,173,180,179,187, 165,181,186,165,179,161,180,182,183,173,182,187,180,180, 176,181,180,185,183,180,165,164,178,170,165,172,171,167, 175,185,207,193,165,165,185,172,183,185,188,180,186,180, 168,176,180,176,180,168,191,194,185,172,165,182,170,173, 163,169,181,161,164,178,178,160,165,186,187,182,178,160, 181,174,195,182,191,170,184,190,184,163,175,188,185,180, 175,175,178,186,159,165,170,162,175,190,188,184,180,170, 170,154,170,180,180,174,171,181,180,163,178,160,175,180, 184,0,169,170,168,182,180,176,177,175,170,183,195,190,182, 190,163,187,188,183,178,160,175,169,184,178,172,175,164, 175,182,180,184,185,185,170,193,176,197,183,182,171,168, 183,167,170,178,175,174,170,168,188,188,180,183,171,180, 175,183,68,75,63,85,47,63,70,85,98,50,71,67,63,56,56, 75,53,52,76,70,59,100,56,86,46,79,83,50,70,48,100,69, 65.5,60,70,80,72,70,68,73,73,83,70,78,57,66,72,57,54, 61,60,56,57,75,118,80,54,50,72,70,77,72,90,73,75,75,52, 70,85,67,70,52,94,79,87,75,60,67,69,69,62,53,75,53,56, 53,60,60,58,82,98,70,74,57,74,65,90,78,73,0,83,80,77, 49,65,83,80,70,65,75,65,74,55,53,76,49,80,75,65,78,63, 60,65,74,62,57,66,68,80,72,76,49,76,55,73,78,75,0,57, 63,60,72,78,67,71,70,65,78,73,85,68,79,45,95,83,65,65, 53,58,70,70,70,58,68,50,67,65,68,85,85,85,70,78,75,110, 94,70,60,56,76,57,60,70,80,65,64,53,55,90,58,72,69,67, 60,90,20,22,26,21,21,21,29,22,21,22,22,22,23,19,25,31, 20,19,20,20,19,32,29,20,19,21,21,19,22,21,24,21,20,19, 19,20,22,20,20,20,21,22,23,25,22,19,20,23,20,19,20,19, 20,19,21,21,20,19,20,22,25,24,24,21,22,22,22,22,21,20, 20,22,20,27,26,22,35,21,25,20,21,20,22,20,19,26,20,22, 19,21,22,23,23,30,21,22,22,22,29,20,21,22,20,20,20,21, 21,20,22,21,22,21,19,20,23,23,24,20,20,24,20,19,22,23, 20,20,20,19,20,23,26,19,21,26,28,23,20,20,21,19,20,22, 20,21,21,21,19,22,20,20,21,20,21,27,20,20,21,20,20,20, 21,22,21,19,21,21,20,21,21,30,21,20,22,24,21,24,21,22, 20,26,23,19,19,20,20,21,21,21,21,21,21,21,20,22,19,2, 3,3,3,2,2,1,1,1,2,2,5,2,2,3,3,2,2,3,2,3,3,3,4,3, 3,3,1,3,2,2,3,2,3,3,2,2,2,2,3,2,3,2,2,2,3,1,3,2, 2,2,3,2,5,3,2,2,3,3,5,3,1,3,3,3,3,4,3,1,2,2,1,2, 2,3,3,3,3,2,3,3,3,3,2,3,3,2,3,3,4,3,2,2,2,2,2,3, 2,5,3,3,2,5,2,5,2,3,2,2,3,3,2,2,2,1,3,2,3,2,2,2, 2,3,3,1,1,1,2,3,3,2,2,2,3,1,2,3,3,3,2,2,3,3,3,3, 2,3,2,5,3,2,3,2,2,2,2,2,3,2,4,3,3,2,2,2,2,2,5,2, 2,3,5,2,2,2,3,2,2,3,3,2,3,2,1,1,3,2,3,1,2,2,1,3, 2,2,2,5,80,5,50,50,10,7,15,40,25,2,3,20,30,3,35,40, 6,25,40,43,6,8,50,0.20000000000000001,2,15,30,20,8,4,3, 25,25,15,4,5,2,7,5,10,5,13,50,40,8,30,50,20,70,15,50, 1,0.69999999999999996,5,65,12,25,40,4,8,5,2,10,10,40,8,8, 20,40,8,5,3,1,5,25,5,12,25,20,20,7,60,60,20,2,22,30, 8,15,10,6,50,1,20,5,0.59999999999999998,5,25,8,0.5,2,30, 4,10,1,4,5,4,12,10,40,6,10,40,5,8,5,7,8,20,7,5,5,7, 4,7,10,6,4,40,4,30,4,4,6,3,20,35,5,4,1.3999999999999999, 5,3,10,20,7,3.5,10,10,8,25,10,5,7,15,64,25,50,3, 0.59999999999999998,20,20,15,30,40,15,10,8,15,10,7,5,12,8, 0.29999999999999999,4,20,5,20,22,40,5,5,10,30,10,3,8,10, 7,12,19,10,42,43,40,41,38,39,42,42,45,37,42,42,42,38, 39,45,38,37,43,42,41,43,42,47,38,44,45,40,39,38,43,44, 43,40,41,44,43,45,43,44,43,43,43,42,39,39,43,39,37,40, 40,38,39,43,49,45,39,38,44,39,43,43,44,43,46,43,39,42, 43,43,40,41,45,46,45,40,39,44,42,40,38,37,45,39,38,39, 38,39,38,45,46,42,43,36,42,40,47,42,42,39,46,45,44.5, 37,42,43,43,46,42,42,43,44,38,38,41,37,44,46,44,43,43, 41,41,44,42,42,42,42.5,42,42,45,38,43,37,42,43,45,42, 38,39,40,43,46,41,45,44,42,44,47,43,42,45,39,46,45,42, 42,37,40,40,43,42,40,42,38,42,45,42,44,44,46,40,44,43, 48,45,43,40,38,43,37,39,40,43,41,40,39,43,45,40,41,41, 42,42,43,0,0,2,0,0,0,1,0,0,1,1,1,2,0,0,2,1,0,0,0, 1,0,1,2,0,1,1,2,0,1,0,3,1,2,0,0,1,0,1,0,1,3,1,1, 1,0,2,0,0,0,0,1,2,0,0,1,0,0,0,1,0,0,0,0,0,1,0,1, 1,1,0,2,0,1,0,1,1,0,1,1,1,1,2,0,1,0,0,0,0,0,0,0, 0,0,0,2,0,1,1,1,1,1,1,0,0,3,1,0,1,0,2,0,1,1,2,1, 2,1,0,1,1,2,0,0,1,6,1,0,1,1,1,1,1,1,2,0,1,0,1,1, 0,1,1,1,1,1,0,1,1,1,0,0,1,1,1,0,1,1,0,1,0,0,0,1, 0,2,1,3,0,1,0,1,1,0,0,0,0,1,1,1,3,0,0,1,0,1,0,1, 3,0,2,1,0,0,1,1,1,1,1,2,5,2,3,0,1,0,0,0,0,1,1,0, 0,0,2,1,0,0,0,0,0,0,1,0,1,0,0,0,3,2,0,0,1,1,0,2, 1,1,0,0,1,0,1,1,0,0,0,0,1,1,0,1,0,0,0,1,1,1,1,0, 0,1,0,1,0,1,0,1,0,3,0,1,2,1,1,1,0,0,3,1,1,1,1,1, 2,0,1,0,0,2,3,1,1,1,0,0,0,1,0,1,0,1,0,1,0,2,1,5, 1,2,0,0,0,0,0,2,0,1,1,1,1,0,1,0,2,0,0,0,0,1,0,0, 1,0,1,1,0,1,0,0,3,2,0,1,0,0,1,1,0,0,1,1,0,0,0,0, 1,1,0,1,1,0,0,1,0,0,0,0,0,1,1,2,2,0,0,1,1,0,1,2, 2,1,0,1,1,0,3,0,1,0,17,7,3,4,0,28,8,23,9,7,8,5,1, 3,7,13,16,5,24,7,7,2,12,7,7,0,3,25,3,12,0,5,5,7,0, 5,0,25,0,7,66,6,7,17,5,13,23,492,6,14,7,21,13,6,9,7, 2,2,0,0,17,47,21,0,5,13,6,0,6,11,8,6,7, 3.1699999999999999,90,28,7,7,99,14,5,18,9,9,8,13,20,5,3, 56,15,69,71,10,8,7,22,5,0,0,15,2604,6,28,0,8,9,13,0, 24,7,13,2,777,0,0,13,15,7,16,5,318,3,0,2,31,3,7,0,4, 4,7,1,7,11,0,16,3,7,13,0,13,666,13,1,1,0,13,23,9,7, 2,7,7,0,9,16,22,1,16,7,21,13,7,17,0,0, 3.1739999999999999,7,0,21,25,7,8,0,32,24,0,22,7,22,7,29, 8,0,0,15,2,13,0,20,17,8,17,13,2,2,2,1,2,1,1,2,2,2, 1,2,2,2,2,1,2,2,2,2,2,2,1,2,2,2,1,2,2,1,2,2,1,2, 2,2,2,2,2,2,1,2,2,1,2,2,1,1,1,2,2,2,2,1,2,2,2,2, 2,2,1,1,2,2,1,1,2,2,2,2,2,2,1,1,1,1,1,1,2,1,2,2, 1,2,2,2,2,1,1,2,1,1,1,1,2,1,2,1,1,1,1,1,2,1,1,1, 2,1,2,1,2,2,2,2,1,1,2,1,2,1,2,1,2,2,2,2,2,1,1,2, 2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,1, 2,2,2,2,2,1,2,2,2,2,2,2,2,1,2,1,2,1,2,1,1,2,2,2, 1,1,1,2,2,1,1,1,1,2,1,2,2,1,1,1,2,500,600,105,400, 0,0,600,6800,5,24,4000,30,200,70,603,2000,500,100,450,80, 480,170,1500,10,2300,600,200,600,30,0,2000,3000,2000,4000, 0,80,10,3,10,5,10,2500,15,0.10000000000000001,0,1600,2000, 600,800,4050,2000,12,7,2500,1700,31,420,1600,1600,0,1200, 30,200,65,3000,25,3500,6,90,100,35,400,0,3,50,20,200,20, 10,50,800,200,18,4000,4000,10,1400,2200,120,20000,500,30, 28,60,100,800,25,38,4000,0,50,2200,24,2.6000000000000001, 1500,280,20,250,0,100,80,40,2500,30,3000,7000,300,36,20, 18,1000,800,0,0.14999999999999999,800,23,2000,80,180,25,0, 4500,18,10,30,15,0,30,0,1900,500,20,300,5,800,2000,100, 2,210,20,2000,2000,3000,2500,30,80,350,5000,700,25,100,9, 1200,1000,12,1000,2500,3500,6,45,2000,30,0,3200,900,200, 50,6000,5000,3000,30,25,50,2000,3000,15,8500,800,30,150,0, 60,13,30,20,3,3,7,4,0,1,3,3,0,4.5,3,3,3,2,1,1,5,5, 5,3,3,0,0,4,4,4,5,3,0,6,0,3,2,2,0,4,5,5,5,5,0,5, 5,3,3,4,5,3,0,0,4,5,5,4,4,3,5,1,4,3,3,5,3,4,3,3, 0,0,2,0,0,1,0,0,0,0,0,6,4,4,3,3,2,3,3,4,3,0,3,5, 4,6,4,0,0,3,3,3,4,2,0,4,5.5,5,4,5,4,5,2,0,0,0,4, 1,0,0,0,0,4,4,0,5,5,4,0,3,4,3,4,2,0,4,1,0,0,0,6, 6,6,0,4,3,3,3,0,0,5,0,2,0,7,4,4,0,3,0,0,6,4,5,3, 0,0,2.5,0,0,2,0,2,0,5,7,0,5,8,5,5,5,5,0,0,0,0,3, 4,0,3,4,0,0,4,0,5,4,0,1,1,1,1,2,1,1,1,2,2,1,1,1, 1,2,2,2,1,1,1,1,2,2,1,1,2,2,2,1,2,2,1,1,1,2,2,2, 1,2,2,2,2,1,2,1,1,2,2,2,1,1,2,2,1,2,2,1,2,2,2,1, 1,1,1,1,1,2,1,1,1,1,1,2,2,2,1,2,1,1,2,2,1,1,2,2, 2,1,2,1,1,1,2,1,2,2,2,2,2,2,1,1,2,2,2,1,1,2,1,2, 1,2,1,2,1,2,2,1,1,1,2,1,1,2,1,2,2,1,2,2,1,0,1,2, 1,1,1,1,1,2,1,2,1,2,1,1,2,2,1,2,2,2,1,2,1,1,1,2, 1,1,2,2,1,2,1,1,2,1,2,2,2,1,2,1,1,1,1,2,1,2,2,2, 1,1,2,2,1,1,1,2,2,1,1,1,2,1,1,1,1,1,1,2,1,1,1,1, 1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,2,2,1,2,1,1,1,1, 2,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,2,2,1,1,1,2,2, 1,1,1,1,1,1,1,2,1,1,1,1,2,1,1,2,1,1,2,1,2,2,2,2, 1,2,1,1,1,2,1,1,2,1,1,2,2,2,2,2,2,1,1,1,2,1,1,1, 2,1,2,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,2,2,1,1,1,1, 1,1,1,1,2,2,1,1,2,2,1,1,2,1,1,2,1,1,1,2,2,1,1,1, 1,1,2,2,2,1,1,1,1,2,1,2,1,1,1,1,1,2,1,1,2,2,1,1, 1,1,1,1,2,2,1,1,2,1,1,2,1,2,1,1,1,39,12,78,26,25, 15,100,15,50,38,60,25,15,17,20,22,26,20,12,0,40,70,66, 20,58,26,21,40,40,48,70,40,110,35,60,15,20,35,36,48,40, 12,9,65,12,18,25,55,20,100,25,25,25,30,18,18,20,30,50, 54,120,50,25,60,20,20,43,20,30,8,30,20,23,100,50,20,60, 30,35,20,63,25,25,20,20,27,100,20,20,50,15,19,18,120, 22,35,52,21,80,25,10,45,21.390000000000001,24,30,30,23,30, 25,50,18,17,19,26,50,60,40,40,40,48,20,20,35,12,35,20, 15,21,25,78,80,15,30,50,65,50,0,30,0,30,25,7,22,95, 120,20,20,30,23,20,32,24,40,60,24,20,64,40,15,40,30,60, 68,30,60,21,30,29,34,60,45,15,14,35,14,35,22,15,28,54, 25,30,30,25,54,32,94,70,25,20,25,90,20,90,40,60,35,30, 40,30,25,25,15,50,50,20,18,60,95,25,10,15,30,13,25,30, 25,20,90,7,20,30,30,45,10,30,15,20,20,5,5,20,8,25,10, 120,25,40,40,20,30,5,15,25,25,30,20,15,39,3,7,10,17, 15,20,50,50,45,45,20,10,25,30,30,56,30,20,8,40,20,90, 20,10,25,15,35,45,5,10,10,5,30,40,25,22,100,35,20,20, 30,50,15,30,5,20,90,10,35,10,50,10,10,60,20,45,5,35, 10,55,10,60,30,30,20,15,20,3,15,40,20,45,20,35,40,10, 45,75,20,20,50,90,20,40,25,30,25,50,25,40,35,20,15,60, 34,15,5,30,15,95,50,60,95,60,20,20,30,60,90,100,90,40, 45,10,18,10,20,40,26,4,45,30,6,50,10,90,45,40,45,10, 10,120,30,45,20,30,20,18.5,25,2,20,100,40,86,54,80,3, 300,12,50,80,40,20,30,40,40,50,30,30,20,180,25,190,30, 32,50,300,160,40,80,50,350,20,25,10,30,50,40,150,40,50, 15,3,30,70,5,20,50,100,20,10,120,35,15,233,450,220,20, 30,35,15,20,200,250,10,90,15,160,40,30,500,15,15,91,300, 50,150,25,50,50,30,30,130,160,0,6,15,40,40,20,120,50, 100,68,100,20,100,25,50,40,30,60,100,152,40,25,150,40, 20,0,40,30,25,0,35,0,40,0,150,50,200,50,120,80,300,10, 20,200,10,30,70,60,15,20,150,90,40,40,0,50,10,60,40, 180,100,63,0,50,30,20,35,30,50,10,100,30,100,55,25,4, 40,30,150,20,20,25,50,280,8,20,100,100,30,0,60,81,50, 20,20,20,10,100,30,10,12,30,60,30,20,20,0,1,1,100,100, 60,80,180,200,300,0,30,150,80,300,150,20,10,60,30,40,30, 150,150,400,0,200,0,800,20,100,100,50,5,400,200,40,150, 30,30,0,100,30,80,25,100,30,12,80,10,30,100,21,100,100, 30,500,40,50,63,70,30,70,50,40,45,15,350,220,50,300,25, 120,100,60,60,40,40,0,300,50,500,200,100,25,20,200,300, 50,30,0,40,50,180,25,200,20,20,120,3000,20,400,50,50,30, 50,100,152,130,328,100,50,30,120,20,40,50,30,20,40,0, 100,80,50,20,100,20,200,30,150,10,100,50,100,20,10,1500, 40,100,50,250,60,10,0,0,70,80,60,120,150,300,0,300,20, 100,20,60,100,30,60,80,75,600,200,20,300,200,50,30,100, 60,20,50,50,70,50,400,120,100,200,2,50,50,200,50,30,50, 100,50,6,25,20,100,15,5,30,0,100,50,100,80,1,2,1,1,2, 1,2,1,1,2,1,1,1,1,2,1,2,1,2,2,2,1,2,1,1,1,2,2,2, 2,1,1,2,2,2,1,1,1,1,1,2,2,2,1,2,1,2,1,2,2,2,2,1, 1,2,1,2,1,2,1,1,1,1,2,1,2,2,2,2,2,2,1,1,1,1,2,1, 1,1,1,1,1,1,2,1,1,1,2,2,1,2,1,1,1,2,1,2,2,2,2,1, 1,2,2,2,1,2,2,2,1,2,1,2,1,2,1,1,2,1,1,1,1,1,1,2, 2,1,2,1,1,1,1,1,1,1,2,2,2,2,1,2,2,1,1,1,2,1,1,2, 1,1,1,2,2,2,1,1,2,2,1,2,1,1,2,2,2,2,2,1,1,1,2,1, 1,1,1,2,1,2,2,2,2,1,1,1,1,1,1,2,1,1,2,1,1,1,5,5, 2,1,0,5,5,5,2,2,2,10,10,5,1,5,1,2,5,2,5,5,6,5,5, 5,5,5,5,5,2,5,5,5,2,5,5,2,2,1,5,2,10,2,2,2,2,5,2, 5,5,2,1,5,2,5,11,5,5,2,5,11,5,2,10,2,11,9,5,5,5,5, 2,5,11,2,11,2,2,9,5,2,2,2,5,11,4,2,2,9,11,5,7,2,5, 5,4,4,5,5,3,2,5,5,5,3,2,9,9,1,2,2,5,5,5,2,2,5,5, 5,5,5,2,4,10,1,5,2,3,5,0,9,3,5,5,10,5,7,2,5,1,5, 2,10,5,5,5,2,2,5,4,5,5,2,10,10,6,2,5,1,11,1,2,9,2, 1,6,4,7,6,1,5,5,5,5,5,5,5,4,2,8,1,2,2,2,2,10,5,9, 2,1,5,5,1,5,1,1,1,1,1,1,2,1,1,1,1,1,1,2,3,2,1,1, 1,2,1,1,4,1,1,1,1,1,2,1,1,2,2,2,1,1,1,1,2,1,1,1, 1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,2,1, 1,2,2,1,1,1,1,2,1,1,2,1,1,1,1,2,1,1,1,2,1,1,1,2, 1,1,1,2,1,1,1,1,2,1,1,1,1,1,2,2,1,1,1,1,1,1,1,2, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2, 1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1, 1,2,1,1,2,2,1,1,1,1,1,1,1,2,1,1,1,1,2,1,2,1,1,1, 1,1,1,1,1,1,1,1,2,1.8,2.7000000000000002,2, 3.4000000000000004,0,3,3.2000000000000002,3,2,1, 3.3000000000000003,2.8000000000000003,2,3,2,3,1.7000000000000002, 3,2,3.1000000000000001,1,3,1.6000000000000001,3.1000000000000001, 2.8000000000000003,3.9000000000000004,3,2.6000000000000001,1.5, 2.6000000000000001,3,3,3,2.3000000000000003,2.7000000000000002, 3.2000000000000002,3,3,3.3000000000000003,2.7000000000000002, 2.7000000000000002,2.3000000000000003,2.2000000000000002, 3.3000000000000003,2.4000000000000004,2.7000000000000002,3,3,3,2, 2,2,2.1000000000000001,2.9000000000000004,2.6000000000000001, 2.6000000000000001,2,1.9000000000000001,2.6000000000000001, 2.8000000000000003,2,1,2,2.8000000000000003,3,3,1.8,3,3,2,2, 2.5,3,1.4000000000000001,1.6000000000000001,3,2.8000000000000003, 2.9000000000000004,2.3000000000000003,2.9000000000000004,2,2,3.5, 2.7999999999999998,3.2000000000000002,2,3,2.2999999999999998, 2.8999999999999999,1.7,3.5,3,2.7000000000000002,3, 3.3999999999999999,1,1,1,3,3.3999999999999999,3,2, 3.2999999999999998,2.6000000000000001,2.8999999999999999, 2.7000000000000002,2.8999999999999999,3,2,3,3,3, 2.7999999999999998,1.8999999999999999,3.2000000000000002,3, 2.7999999999999998,2.8999999999999999,3,3,3,2.7000000000000002,3, 2,3,2.8999999999999999,2.1000000000000001,3,3.2000000000000002,2, 3,2,1.8999999999999999,3.3999999999999999,3,3,2.7000000000000002, 0,3.7000000000000002,2.8999999999999999,2.6000000000000001,2, 3.2000000000000002,3,2.7999999999999998,3.1000000000000001,2,3,3, 1.8999999999999999,2,2.1000000000000001,2.7999999999999998,3, 2.1000000000000001,2.3999999999999999,3,2.1000000000000001,1.3,3, 1.8,1.3999999999999999,2,2.5,1,2.8999999999999999,1.8, 3.2999999999999998,2.2999999999999998,2,1,2.8999999999999999, 2.7999999999999998,3,3.2000000000000002,2,2,2.5,2.5, 2.8999999999999999,2,1.8,2,3.1000000000000001,3.3999999999999999, 3.1000000000000001,3,2,3,3.5,2,2.6000000000000001,2,0, 3.3999999999999999,3,3,4,5,3,3,3,2,1,2,3,2,2,4,3,3,2, 4,2,2,1,4,2,2,2,2,3,3,1,3,2,2,3,3,2,3,3,3,5,3,4, 9,2,3,2,4,6,3,4,3,2,1,1,3,3,3,2,2,12,2,1,2,2,5,3, 4,2,1,3,3,3,3,3,1,1,3,4,2,2,11,4,2,3,3,3,2,4,1,2, 2,3,3,4,3,3,1,2,3,0,3,4,4,4,1,3,4,4,3,3,2,4,2,2, 1.7,4,4,3,4,3,3,3,2,5,2,3,2,1,3,4,3,4,1,2,1,2,2, 2,0,4,2,3,2,3,3,2,3,2,3,4,1,4,1.7,2,4,3,3,2,2,1, 2,1.7,1,3,3.1000000000000001,1,3,1,2,2,2,1,3,2,4,4,3,1, 4,1.7,3,3,2,2,2,4,4,2,2,4,4,2,2,3,0,3,3,4,1,4,4, 3,4,4,4,4,4,4,4,4,3,4,4,4,2,3,4,4,3,4,4,4,3,3,3, 3,4,4,5,4,4,2,4,4,4,3,5,3,4,4,3,3,1,4,3,4,3,4,4, 4,1,4,1,4,4,4,0,4,4,4,4,4,3,3,3,3,3,4,4,4,4,3,4, 4,5,1,4,4,4,3,3,1,4,3,3,4,5,3,3,4,2,4,3,3,3,3,4, 4,3,4,3,1,1,4,3,4,1,4,1,4,3,5,3,4,4,1,4,4,1,4,3, 3,4,3,3,4,4,5,4,4,3,3,3,3,3,3,3,3,1,3,3,3,4,4,3, 4,2,4,3,5,3,3,5,4,4,4,3,5,3,5,5,3,3,3,4,5,4,1,4, 4,4,4,3,4,4,5,5,4,4,4,4,5,4,4,4,4,4,4,4,1,4,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,2,1,1,1,1,1, 1,2,1,1,1,1,1,1,1,2,2,1,2,1,2,2,1,1,1,2,2,1,2,1, 1,2,2,1,2,1,2,2,1,2,1,1,1,1,1,1,1,1,1,2,1,1,2,1, 1,1,1,1,1,1,1,2,1,2,2,1,1,1,2,2,2,2,2,1,2,1,2,2, 1,1,1,2,2,1,1,2,2,1,1,2,2,1,2,2,2,1,1,2,1,1,1,1, 2,1,2,1,1,2,2,1,1,1,2,1,1,1,1,1,2,1,1,1,1,1,1,1, 2,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,2,1,2,1,1,2,1, 1,2,2,1,1,2,1,1,2,1,1,1,1,2,1,2,1,1,2,2,1,1,1,1, 1,650,350,800,390,1000,1000,500,400,400,1000,500,900,1000, 560,900,1000,800,400,300,700,500,0,2000,300,700,1200,400, 700,500,700,2000,1000,500,400,500,1100,1000,900,1500,1000, 800,700,400,1000,800,400,1000,1000,500,100,200,1100,1100, 600,600,1000,100,1000,850,800,1500,1200,500,300,1000,1000, 1700,100,500,100,500,500,1200,1000,2000,1000,2000,700,1500, 800,800,300,300,1000,1000,600,700,860,400,400,1000,1500, 500,2000,1000,600,1000,1000,1200,1000,1000,25,1000,1100,400, 800,1000,500,1000,1500,1000,400,1000,250,2000,1500,1000,300, 600,850,500,300,900,1000,1300,900,500,900,1000,600,600, 1000,700,1000,1000,400,400,1200,1000,500,700,300,800,500, 100,900,1500,800,900,1500,650,650,500,600,300,200,0,200, 300,1000,1000,400,700,500,500,1000,1500,1100,1400,1400,500, 800,500,1000,800,800,1000,800,800,1500,700,250,200,1600, 1000,500,200,500,2000,1000,600,1500,600,1300,500,32,38,32, 30,30,20,25,20,40,30,50,30,30,20,30,35,30,30,40,20,30, 50,25,30,30,25,30,20,40,17,35,28,30,30,0,33,35,35,35, 35,30,37,37,28,35,40,45,35,12,12,40,35,40,25,30,35,25, 22,30,35,20,40,35,30,30,40,40,30,28,30,15,28,25,20,30, 35,30,20,25,25,25,25,25,40,35,55,35,10,40,45,26,40,30, 30,20,40,39,39,0,25,25,50,40,5,20,50,40,35,12,40,50, 35,30,30,30,40,30,20,25,40,25,30,15,35,20,50,30,30,40, 30,56,50,30,25,40,25,35,25,0,35,50,0,40,30,30,40,0,25, 50,30,30,35,30,50,25,40,15,30,25,35,40,50,0,22,50,40, 50,25,40,30,40,32,30,50,30,40,30,30,28,25,30,25,25,30, 40,30,45,0,30,0,42,40,37,8,35,0,3,8,3,20,20,2,7,0, 20,8,15,0,0,0,10,10,12,8,6,6,14,20,3,10,0,6,10,8,10, 2,15,8,7,0,0,5,8,15,8,8,0,5,10,0,0,11,15,4,7,10,0, 0,5,0,0,30,6,0,10,15,4,0,0,3.5,10,0,0,0,10,7,12,0, 15,30,12.5,30,4,25,10,25,0,0,10,15,8,10,6,20,20,10,20, 20,0,0,10,9,8,0,5,16,0,12,8,0,10,0,2,16,0,10,0,10, 8,30,0,0,20,12,12,10,18,0,8,4,0,12,8,0,0,1,4,0,3, 16,3,0,0,0,14,0,0,6,0,0,3,0,0,0,10,10,0,8,4,2,0,0, 11,0,10,0,3,0,0,0,10,0,10,0,21,15,8,0,0,25,10,10, 3.5,4,20,10,4,6,15,16,0,20,20,0,0,10,12,0,10,4,4,2, 6,12,0,16,5,10,6,5,10,10,7,10,4,2,10,10,6,3,1,0,10, 15,5,10,20,14,5,20,10,8,20,3,0,10,0,4,5,5,5,4,3,15, 5,5,12,14,4,4,6,10,5,4,10,15,6,3,3,8,10,8,10,1,0,5, 0,10,30,0,10,20,20,6,5,3,3,15,15,5,3,1,15,5,10,2,3, 2,10,20,2,3,2,10,0,14,8,8,5,7.5,10,50,32,28,10,4,10, 2,7,6,7,10,10,8,30,10,20,8,15,10,14,2,12,10,12,5,6, 2,15,10,1,6,10,10,16,7,7,0,0,5,5,20,10,10,10,12,1.5, 2,10,10,5,10,7,10,10,9,10,1,10,2,3,10,5,5,10,0,0,40, 4,3,5,10,8,20,0,5,10,10,10,15,5,3,4,20,20,6,2,20,20, 10,7,10,4,10,10,3599,60,60,2000,4000,4000,4000,4000,60,0, 5000,0,3500,0,0,3000,3000,3000,2,3,3000,0,6,4,2500,2500, 3,60,0,0,4,3000,2000,70,0,4.5,4,3,300,4,25,60,40,60,0, 20,8000,36,36,0,1500,30,100,60,55,25,1500,2500,80,3800,4, 38,80,20,3500,4,4300,2500,60,0,0,4000,8000,8,70,0,70, 1000,60,5,3000,50,50000,4000,0,70,40,5000,20,60000,30,60, 3,30,5000,4,70,75,5000,4,2500,80,60000,60,0,2.5,4,60,0, 2000,4,4,5,30,10000,6000,5000,0,50,60000,50,0,0,80,5000, 50,5000,5000,60,70,12,4000,4,5,5,4,5000,0,0,4000,4000,5, 1.5,3000,3500,5000,70,1,4,5000,60,6100,3000,3000,4,4000,0, 0,5000,3000,5000,70000,3000,5000,4000,50000,127000,72000, 4500,70,60,60,80,3500,0,75,72,70000,65,3500,20,3000,3000, 3.5,4000,0,60000,60000,30,25,70,800,4,2000,3500,10,10,10, 11,14,14,10,10,13,12,13,10,10,10,10,10,9,10,10,10,11, 0,8,9,11,10,10,10,9,12,9,8,10,8,8,10,10,10,10,11,9, 11,9,11,9,9,10,12,10,10,10,9,8,9,10,12,10,10,11,11, 10,9,10,8,8,10,9,12,12,9,5,10,9,9,9,12,10,10,10,12, 8,8,10,13,11,10,10,10,10,8,10,10,12,12,12,8,8,8,10, 10,9,8,10,10,12,10,10,9,9,10,10,10,10,10,10,10,10,12, 12,10,11,10,10,10,8,8,10,9,10,10,8,10,10,10,12,11,10, 8,13,9,11,9,9,10,15,10,8,10,10,10,9,10,10,8,12,11,0, 10,9,11,9,12,10,10,10,10,16,10,9,12,9,11,9,20,9,9,9, 8,9,11,12,10,9,8,14,10,9,10,12,12,10,8,8,4,9,620,45, 45,0,0,99,45,720,720,0,0,0,175,0,0,500,480,480,480,700, 60,0,600,480,35,600,600,720,600,50,12,600,50,600,0,480, 480,0,500,500,40,20,500,600,0,600,738,607,500,605,660, 615,600,612,600,625,600,660,500,4085,622,650,600,430,24, 500,64,660,600,480,60,600,0,700,1200,0,720,20,550,500, 500,56,52,744,550,200,400,55,0,660,63,600,500,600,600, 540,660,660,0,0,150,650,720,720,999,550,650,600,0,90,50, 630,60,600,0,600,50,48,480,630,500,636,630,48,50,0,50, 45,600,480,100,600,600,480,550,480,650,0,0,0,50,44,720, 500,600,800,0,50,500,600,540,50,600,600,36,10,45,0,600, 300,60,60,0,1,1,540,700,610,620,666,60,45,674,648,0,600, 600,480,587,650,3679,580,540,600,0,600,0,0,360,0,0,600, 480,0,720,9,3,7,5,0,5,1,4,1,3,6,0,5,9,9,5,5,1,3,7, 9,9,3,5,5,5,2,7,3,0,5,5,1,6,9,9,7,2,5,9,7,9,1,7, 1,3,1,5,8,9,1,1,2,1,1,1,1,9,3,7,6,6,9,2,3,1,4,7, 2,3,7,5,8,8,4,1,3,9,7,1,1,7,1,7,7,6,1,2,3,2,3,1, 8,7,5,3,2,1,5,1,3,2,9,9,5,1,1,3,0,1,5,5,9,5,0,1, 7,5,1,9,1,9,2,7,7,8,5,3,1,1,6,9,1,7,3,9,5,0,9,9, 9,5,1,1,1,5,9,1,5,7,9,2,5,3,9,1,6,5,5,3,2,7,1,8, 1,1,0,2,2,3,1,7,1,8,9,5,3,3,9,5,9,5,5,5,9,5,5,2, 5,7,1,5,1,0,3),.Dim = c(195,34),.Dimnames = list(character(0), c("1:Geschlecht","2:Groesse","3:Gewicht","4:Alter","5:Haarfarbe", "6:Haarlaenge","7:Schuhgroesse","8:Brueder","9:Schwestern", "10:Glueckszahl","11:Rauchen","12:Urlaubs-km","13:Feten-Stunden", "14:Eltern-Wohnung","15:PC-Zugriff","16:Wohnflaeche", "17:Weg-Minuten","18:CDs","19:Buecher","20:Auto","21:Zeitung", "22:Studiengang","23:Abi-Note","24:Mathe-Note","25:Verkehrsmittel", "26:Wunschort","27:Ausgaben","28:Studierzeit","29:Verdienzeit", "30:TV-Zeit","31:Anfangsgehalt","32:Studiendauer","33:Dekansalter", "34:Partei"))) #:8 #9: s165<-0.01*c( 172,51,66,414,292,14,97,157,10,441,9,467,168,193,27,311,179,87,154,11, 282,771,133,351,1313,323,428,432,133,129,468,97,213,441,539,452,48,22,115,103, 390,142,26,76,199,386,87,120,432,311,364,107,360,12,411,55,16,313,46,186, 423,157,106,460,817,259,215,38,4,162,258,51,805,201,598,178,97,34,63,44, 126,10,39,542,77,27,214,119,202,174,,105,315,23,459,228,238,347,170,174,84) s166<-c(40,37,41,40,43,37,38,40,42,43,39,40,39,40,42,38, 41,41,39,38,42,40,41,39,37,40,41,40,39,40,41,42) #:9 #10: init.revbook<-function(){ options(digits=5) assign("Menu",Menu,frame=1) } #:10 #11: open.revbook<-function(){ # h<-unix("if [ -f revbookreport.rev ] ; then \n echo 'hallo' \n fi ") # if(length(h)>0){ # cat("Es existiert bereits eine Reportdatei.\n") # cat("Soll diese geloescht werden ? (j=Datei loeschen)\n") # if("j"==readline()) unix("rm revbookreport.rev",,F) # } h<-find("open.revbook") h<-substring(h,1,nchar(h)-5) if(exists("win.graph")){ revive(paste(h,"revbook",sep="") ,editor="edit" ) } else { revive(paste(h,"revbook",sep="") ,editor="vuepad" ) } } open.lotto<-function(){ # h<-unix("if [ -f revbookreport.rev ] ; then \n echo 'hallo' \n fi ") # if(length(h)>0){ # cat("Es existiert bereits eine Reportdatei.\n") # cat("Soll diese geloescht werden ? (j=Datei loeschen)\n") # if("j"==readline()) unix("rm revbookreport.rev",,F) # } h<-find("open.revbook") h<-substring(h,1,nchar(h)-5) if(exists("win.graph")){ revive7(paste(h,"lotto",sep="") ,editor="edit" ) } else { revive7(paste(h,"lotto",sep="") ,editor="vuepad" ) } } #:11 #12: show.revbook<-function(){ cat("Funktion zur Anzeige des revbook mit ghostview\n") cat(" Bitte haben Sie ein wenig Geduld!\n") h<-find("open.revbook") h<-substring(h,1,nchar(h)-5) gv<-unix("which ghostview") h<-paste(gv," ",h,"revbook.ps&",sep="") unix(h,,F) print("ghostview wird mit q beendet!") invisible() } show.lotto<-function(){ cat("Funktion zur Anzeige des Lotto-Papiers mit ghostview\n") cat(" Bitte haben Sie ein wenig Geduld!\n") h<-find("open.revbook") h<-substring(h,1,nchar(h)-5) gv<-unix("which ghostview") h<-paste(gv," ",h,"lotto.ps&",sep="") unix(h,,F) print("ghostview wird mit q beendet!") invisible() } #:12 #13: Menu<-function(auswahl, mess = "items:",la,title="",report=F ){ l.cat<- function(..., file = "", sep = " ", fill = F, labels = NULL, append = F) .Internal(cat(..., file, sep, fill, labels, append), "S_cat", T, 0) if(missing(la)) la<- letters[1:length(auswahl)] # ----- VORLAEUFIG ------ report<-F # ---- wegen der Sicherheit --------- if(report){ auswahl<-c(auswahl,"Reportbearbeitung/Plot kopieren") la<-c(la,"R") } mess <- c(mess, paste("\n", la, auswahl), "\nSelection: ") if(exists("sinkname.r")) sink() if(0revbook.report()","."),frame=w.frame.r) res<-1 } return(res) } #:13 #14: look.act.points.up<-function(key='cat("Revbook',trenn=":",end.skip=3){ #15: sch.r <-get("sch.r",frame=sys.parent()) act.def<-sch.r[zeilen<-(1:length(sch.r))[substring(sch.r,1,nchar(key))==key]] act.def<-substring(act.def,nchar(key)+2,nchar(act.def)-end.skip) #:15 #16: section.no<-substring(sch.r[zeilen-1],2,4) section.no<-ifelse( substring(section.no,3,3)==":", substring(section.no,1,2), section.no ) section.no<-ifelse( substring(section.no,2,2)==":", substring(section.no,1,1), section.no ) #:16 #17: act.text <-act.def act.names<-act.index<-rep(" ",length(act.def)) for(i in 1:length(act.def)){ h<-(1:nchar(act.def[i])) h<-h[substring(act.def[i],h,h)==trenn] if(length(h)==2){ act.index[i]<-substring(act.def[i],1,h[1]-1) act.text[i] <-substring(act.def[i],h[2]+1) act.names[i]<-substring(act.def[i],h[1]+1,h[2]-1) h<-1:nchar(act.names[i]) h<-substring(act.names[i],h,h) h<-paste(h[h!=" "],collapse="") if(nchar(h)>0) assign(h,section.no[i],frame=1) } } h<-max(nchar(act.names)) act.names<-paste(act.names, substring(" ",0,h-nchar(act.names)),sep="") #:17 #18: h<-cbind(act.names,act.text,act.index,section.no) return(h) #:18 } #:14 #19: activate.jump<-function(name.text.index.no){ key.text<-paste(name.text.index.no[,1],name.text.index.no[,2],sep=" ") h<-name.text.index.no[,3] ord<-order(substring(h,2)) section.no<-name.text.index.no[,4] h<-paste(rep(" ",nchar(name.text.index.no[1,1])),collapse="") wahl<-Menu(c(paste(h,"Abbruch",sep=" "),key.text[ord]))-1 if(wahl>0){ cmds<-paste("s",section.no[ord][wahl]) assign("cmds",cmds,frame=sys.parent()) } } #:19 #20: outin<-function(Text="leer",endtext="BITTE RETURN"){ if(!missing(Text)){cat(Text);cat("\n")} cat(endtext) cat("\n") h<-readline() h } #:20 #21: boxplotexp<-function(){ #22: x1<-10:30 x2<-rep(10:30,4) set.seed(15) x3<-rnorm(100,20,10) x4<-20+.5*x3 set.seed(15) x5<-rexp(100,1/20) x<-list("1"=x1,"2"=x2,"3"=x3,"4"=x4,"5"=x5) boxplot(x) #:22 #23: cat("Der Boxplot\n") cat("-----------\n") cat("Der Boxplot gibt dem Betrachter einen Eindruck von der Lage,\n") cat("der Variabilitaet, der Symmetrie und den Randbereichen eines\n") cat("Datensatzes. In dem jetzt sichtbaren Fenster sind die 5 Boxplots\n") cat("von 5 verschiedenen Datensaetzen dargestellt. Im\n") cat("mittleren Bereich ist deutlich eine Box mit einer horizontalen Linie\n") cat("zu erkennen. Diese Linie markiert den Median. Die \n") cat("auesseren Linien der Box stellen jeweils das untere resp. das obere\n") cat("Quartil dar. Der vom unteren bis zum oberen Quartil reichende Kasten\n") cat("symbolisiert die zentralen 50% der Daten.\n") cat("Die aus optischen Gruenden durch Querstriche begrenzten Linien oben\n") cat("und unten repraesentieren nochmals jeweils 25% der Daten; ihre Enden\n") cat("markieren die Extrempunkte des Datensatzes, min(x) und max(x).\n") #:23 #24: repeat{ cat("Zu welchem Datensatz der 5 angebotenen wollen Sie weitere Hinweise?\n") cat("Empfehlung: Zur ersten Orientierung bietet es sich an, \n") cat("zuerst alle nacheinander anzuschauen.\n") wunsch<-c(scan(,0,n=1),0)[1] if(wunsch==0)break if(wunsch==1){ cat("Zum Datensatz 1:\n") cat("Der erste Datensatz besteht aus den Zahlen\n") cat("10,11,...,30. Er ist symmetrisch, die Extrema sind 10 und 30, also\n") cat("ist der Median gerade 20. Dies kann unmittelbar am Plot abgelesen\n") cat("werden. Die Box wird durch 15 und 25 begrenzt, diese Punkte grenzen\n") cat("das untere Viertel bzw. das obere Viertel vom Rest ab. In diesem \n") cat("Fall ist 15 das untere Quartil, 25 das obere. Auch diese \n") cat("Informationen sind einfach aus dem Boxplot abzulesen\n") cat("{siehe Graphik}.\n") } if(wunsch==2){ cat("Zum Datensatz 2: \n") cat("Dieser Datensatz ist aus der viermaligen\n") cat("Wiederholung der Zahlen von 10 bis 30 (4xDatensatz 1) entstanden.\n") cat("Also hat auch er den Median 20. Da die anderen Statistiken\n") cat("ebenfalls mit dem ersten Datensatz uebereinstimmen, ergibt sich\n") cat("dasselbe Erscheinungsbild.\n") cat("Hinweis: vergleiche die Datensaetze!\n") cat("Ein Datensatz, den man durch VervielfÌltigung eines\n") cat("bereits vorhandenen Datensatzes erhaelt, hat weiterhin das gleiche\n") cat("Erscheinungsbild.\n") cat("Merke\n") cat("Der Stichprobenumfang hat keinen Einfluss auf den Boxplot.\n") } if(wunsch==3){ cat("Zum Datensatz 3:\n") cat("Dieser Datensatz vom Umfang 100 ist eine Stichprobe aus\n") cat("einer symmetrischen Grundgesamtheit mit Mittel 20 und Streuung 10.\n") cat("Es ergibt sich ein symmetrischer Boxplot. Die Extrema (-5.18,46.98)\n") cat("sind weiter vom Zentrum entfernt als bei Datensatz 1. Die Box ist\n") cat("etwas laenger, jedoch deckt sie nur ca. ein Drittel des \n") cat("Datenbereiches ab.\n") cat("Allgemein kann man also sagen, dass die Boxlaenge nichts darueber \n") cat("aussagt, wieviel die Box vom Datenbereich abdeckt. \n") cat("Man sagt zwar, dass die Box 50% der Daten enthaelt,\n") cat("aber das heisst nicht, dass die Box auch 50% des Datenbereichs\n") cat("abdeckt. Man sieht, dass die Daten selbst einen grossen Einfluss\n") cat("auf das Erscheinungsbild haben, denn die Extrema sind dafuer\n") cat("verantwortlich, dass die Box bloss ein Drittel des Datenbereichs\n") cat("abdeckt.\n") } if(wunsch==4){ cat("Zum Datensatz 4: Dieser Datensatz ist durch eine Stauchung (:2) und\n") cat("Verschiebung (+20) aus dem dritten Datensatz entstanden. Deshalb\n") cat("liegt der Median um 20 hoeher und die Spannweite wie\n") cat("auch die Boxgroesse haben sich halbiert.\n") cat("Merke:\n") cat("Addition einer Zahl z bewirkt eine Verschiebung des Boxplot\n") cat("nach oben (bei positiven Zahlen z) bzw.\n") cat("nach unten (bei negativen Zahlen z).\n") cat("Merke:\n") cat("Multiplikation mit einer Zahl z>1 bewirkt \n") cat("eine Streckung des Boxplots.\n") cat("Analog bewirkt die Division mit einer Zahl z\n") cat("eine Stauchung des Boxplots.\n") } if(wunsch==5){ cat("Zum Datensatz 5: Dieser Datensatz ist aus einer asymmetrischen \n") cat("Grundgesamtheit mit dem Mittel 20 gezogen worden. Der wesentliche\n") cat("Teil der Daten liegt im Bereich zwischen 0 und 30. Nur ca. 25%\n") cat("sind im Bereich (25,100) verteilt.\n") cat("Die Box erstreckt sich von 3.92 (unteres Quartil) bis 26.19\n") cat("(oberes Quartil), d.h., dass 50% der Daten zwischen\n") cat("3.92 und 26.19 liegen. Die Extrema sind 0.28 und 97.74.\n") cat("Wie man sieht gibt es auf der einen Seite viele Daten, die\n") cat("sehr dicht zusammenliegen, auf der anderen Seite gibt es aber auch \n") cat("sog. Ausreisser. Das sind Daten, die weiter entfernt\n") cat("vom Zentrum liegen. Die Ausreisser bewirken,\n") cat("dass der Datenbereich links und rechts von der Box, der jeweils\n") cat("25% der Daten enthaelt, unterschiedlich lang ist. Anhand der\n") cat("Lage der Querstriche kann man erkennen, ob und in welchem Bereich\n") cat("es Ausreisser gibt.\n") } } # end of repeat #:24 #25: cat("Sie koennen jetzt einen Datensatz zur genaueren Analyse aussuchen.\n") cat("Welchen Datensatz der 5 angebotenen waehlen Sie?\n") wunsch<-c(scan(,0,n=1),0)[1] if(wunsch==0) break switch(wunsch,x<-x1,x<-x2,x<-x3,x<-x4,x<-x5) x.all<-list("ODS"=x) #:25 #29: boxplot(x) stats<-boxplot(x,plot=F) par(usr=c(0,6,par()$usr[3:4])) text(1,max(x),"Maximum") text(1,stats$stats[2],"oberes Quartil") text(1,stats$stats[3],"Median") text(1,stats$stats[4],"unteres Quartil") text(1,min(x),"Minimum") text(5,min(x),as.character(min(x))) text(5,stats$stats[4],as.character(stats$stats[4])) text(5,stats$stats[3],as.character(stats$stats[3])) text(5,stats$stats[2],as.character(stats$stats[2])) text(5,max(x),as.character(max(x))) #:29 #32: boxplot(x) stats<-boxplot(x,plot=F) par(usr=c(0,6,par()$usr[3:4])) text(1,max(x),"Maximum") text(1,stats$stats[2],"oberes Quartil") text(1,stats$stats[3],"Median") text(1,stats$stats[4],"unteres Quartil") text(1,min(x),"Minimum") text(5,min(x),as.character(min(x))) text(5,stats$stats[4],as.character(stats$stats[4])) text(5,stats$stats[3],as.character(stats$stats[3])) text(5,stats$stats[2],as.character(stats$stats[2])) text(5,max(x),as.character(max(x))) #:32 repeat{ #26: cat("Sie koennen nun mit dem Datensatz operieren.\n") cat("Was wollen Sie\n") angebot<-c( "ENDE", "Datensatz anzeigen", "Zusammenfassende Statistiken berechnen", "Ausgangs-Datensatz um Konstante verschieben", "Ausgangs-Datensatz um Faktor strecken", "Ausgangs-Datensatz logarithmieren", "vorherigen Datensatz um Konstante verschieben", "vorherigen Datensatz um Faktor strecken", "vorherigen Datensatz logarithmieren", "Datensatz um weitere Daten ergaenzen", "Daten aus Datensatz entfernen", "neuen Datensatz eingeben", "Datensatz aus den 5 angebotenen aussuchen" ) wunsch<-menu(angebot) #:26 #27: switch(wunsch, { break },{ print(x.all) cat("Bitte return!\n") readline() },{ print(lapply(x.all,summary)) },{ cat("Um wieviel soll der Datensatz verschoben werden?\n") wunsch<-c(scan(,0,n=1),0)[1] h<-x+wunsch x.all<-c(x.all,list(h)) new.name<-paste("ODS +",wunsch) #28: names(x.all)<-c(names(x.all)[-length(x.all)],new.name) #:28 #31: names(x.all)<-c(names(x.all)[-length(x.all)],new.name) #:31 #30: boxplot(x.all) #par(mfrow=c(1,length(x.all))) #for(x in x.all) boxplot(x) #par(mfrow=c(1,1)) #:30 #33: boxplot(x.all) #par(mfrow=c(1,length(x.all))) #for(x in x.all) boxplot(x) #par(mfrow=c(1,1)) #:33 },{ cat("Um wieviel soll der Datensatz gestreckt werden?\n") wunsch<-c(scan(,0,n=1),0)[1] h<-x*wunsch x.all<-c(x.all,list(h)) new.name<-paste("ODS *",wunsch) #28: names(x.all)<-c(names(x.all)[-length(x.all)],new.name) #:28 #31: names(x.all)<-c(names(x.all)[-length(x.all)],new.name) #:31 #30: boxplot(x.all) #par(mfrow=c(1,length(x.all))) #for(x in x.all) boxplot(x) #par(mfrow=c(1,1)) #:30 #33: boxplot(x.all) #par(mfrow=c(1,length(x.all))) #for(x in x.all) boxplot(x) #par(mfrow=c(1,1)) #:33 },{ cat("Datensatz wird logarithmiert!\n") if(min(x)>0){ h<-log(x) new.name<-"log(ODS)" } else { h<-x new.name<-"ODS" cat("Datensatz konnte nicht logarithmiert werden!\n") } x.all<-c(x.all,list(h)) #28: names(x.all)<-c(names(x.all)[-length(x.all)],new.name) #:28 #31: names(x.all)<-c(names(x.all)[-length(x.all)],new.name) #:31 #30: boxplot(x.all) #par(mfrow=c(1,length(x.all))) #for(x in x.all) boxplot(x) #par(mfrow=c(1,1)) #:30 #33: boxplot(x.all) #par(mfrow=c(1,length(x.all))) #for(x in x.all) boxplot(x) #par(mfrow=c(1,1)) #:33 },{ cat("Um wieviel soll der vorherige Datensatz verschoben werden?\n") wunsch<-c(scan(,0,n=1),0)[1] h<-x.all[[length(x.all)]]+wunsch x.all<-c(x.all,list(h)) new.name<-paste("neuer DS +",wunsch) #28: names(x.all)<-c(names(x.all)[-length(x.all)],new.name) #:28 #31: names(x.all)<-c(names(x.all)[-length(x.all)],new.name) #:31 #30: boxplot(x.all) #par(mfrow=c(1,length(x.all))) #for(x in x.all) boxplot(x) #par(mfrow=c(1,1)) #:30 #33: boxplot(x.all) #par(mfrow=c(1,length(x.all))) #for(x in x.all) boxplot(x) #par(mfrow=c(1,1)) #:33 },{ cat("Um wieviel soll der vorherige Datensatz gestreckt werden?\n") wunsch<-c(scan(,0,n=1),0)[1] h<-x.all[[length(x.all)]]*wunsch x.all<-c(x.all,list(h)) new.name<-paste("neuer DS *",wunsch) #28: names(x.all)<-c(names(x.all)[-length(x.all)],new.name) #:28 #31: names(x.all)<-c(names(x.all)[-length(x.all)],new.name) #:31 #30: boxplot(x.all) #par(mfrow=c(1,length(x.all))) #for(x in x.all) boxplot(x) #par(mfrow=c(1,1)) #:30 #33: boxplot(x.all) #par(mfrow=c(1,length(x.all))) #for(x in x.all) boxplot(x) #par(mfrow=c(1,1)) #:33 },{ cat("vorheriger Datensatz wird logarithmiert!\n") h<-x.all[[length(x.all)]] if(min(h)>0){ h<-log(h) new.name<-"log(neuer DS)" }else { h<-h new.name<-"neuer DS" cat("vorheriger Datensatz konnte nicht logarithmiert werden!\n") } x.all<-c(x.all,list(h)) #28: names(x.all)<-c(names(x.all)[-length(x.all)],new.name) #:28 #31: names(x.all)<-c(names(x.all)[-length(x.all)],new.name) #:31 #30: boxplot(x.all) #par(mfrow=c(1,length(x.all))) #for(x in x.all) boxplot(x) #par(mfrow=c(1,1)) #:30 #33: boxplot(x.all) #par(mfrow=c(1,length(x.all))) #for(x in x.all) boxplot(x) #par(mfrow=c(1,1)) #:33 },{ cat("Geben Sie weitere Daten ein!\n") cat("Eine leere Eingabe beendet !\n") h<-c(x,scan(,0)) x.all<-c(x.all,list(h)) #30: boxplot(x.all) #par(mfrow=c(1,length(x.all))) #for(x in x.all) boxplot(x) #par(mfrow=c(1,1)) #:30 #33: boxplot(x.all) #par(mfrow=c(1,length(x.all))) #for(x in x.all) boxplot(x) #par(mfrow=c(1,1)) #:33 },{ cat("Hier ist der Datensatz!\n") print(rbind(Index=1:length(x),Daten=x)) cat("Geben Sie die Indizes der zu entfernenden Beobachtungen ein!\n") cat("Eine leere Eingabe beendet !\n") h<-x[-scan(,0)] x.all<-c(x.all,list(h)) #30: boxplot(x.all) #par(mfrow=c(1,length(x.all))) #for(x in x.all) boxplot(x) #par(mfrow=c(1,1)) #:30 #33: boxplot(x.all) #par(mfrow=c(1,length(x.all))) #for(x in x.all) boxplot(x) #par(mfrow=c(1,1)) #:33 },{ cat("Geben Sie die neuen Daten ein!\n") cat("Eine leere Eingabe beendet !\n") wunsch<-scan(,0) if(length(wunsch)>0) x<-wunsch x.all<-list(x) #29: boxplot(x) stats<-boxplot(x,plot=F) par(usr=c(0,6,par()$usr[3:4])) text(1,max(x),"Maximum") text(1,stats$stats[2],"oberes Quartil") text(1,stats$stats[3],"Median") text(1,stats$stats[4],"unteres Quartil") text(1,min(x),"Minimum") text(5,min(x),as.character(min(x))) text(5,stats$stats[4],as.character(stats$stats[4])) text(5,stats$stats[3],as.character(stats$stats[3])) text(5,stats$stats[2],as.character(stats$stats[2])) text(5,max(x),as.character(max(x))) #:29 #32: boxplot(x) stats<-boxplot(x,plot=F) par(usr=c(0,6,par()$usr[3:4])) text(1,max(x),"Maximum") text(1,stats$stats[2],"oberes Quartil") text(1,stats$stats[3],"Median") text(1,stats$stats[4],"unteres Quartil") text(1,min(x),"Minimum") text(5,min(x),as.character(min(x))) text(5,stats$stats[4],as.character(stats$stats[4])) text(5,stats$stats[3],as.character(stats$stats[3])) text(5,stats$stats[2],as.character(stats$stats[2])) text(5,max(x),as.character(max(x))) #:32 },{ #25: cat("Sie koennen jetzt einen Datensatz zur genaueren Analyse aussuchen.\n") cat("Welchen Datensatz der 5 angebotenen waehlen Sie?\n") wunsch<-c(scan(,0,n=1),0)[1] if(wunsch==0) break switch(wunsch,x<-x1,x<-x2,x<-x3,x<-x4,x<-x5) x.all<-list("ODS"=x) #:25 #29: boxplot(x) stats<-boxplot(x,plot=F) par(usr=c(0,6,par()$usr[3:4])) text(1,max(x),"Maximum") text(1,stats$stats[2],"oberes Quartil") text(1,stats$stats[3],"Median") text(1,stats$stats[4],"unteres Quartil") text(1,min(x),"Minimum") text(5,min(x),as.character(min(x))) text(5,stats$stats[4],as.character(stats$stats[4])) text(5,stats$stats[3],as.character(stats$stats[3])) text(5,stats$stats[2],as.character(stats$stats[2])) text(5,max(x),as.character(max(x))) #:29 #32: boxplot(x) stats<-boxplot(x,plot=F) par(usr=c(0,6,par()$usr[3:4])) text(1,max(x),"Maximum") text(1,stats$stats[2],"oberes Quartil") text(1,stats$stats[3],"Median") text(1,stats$stats[4],"unteres Quartil") text(1,min(x),"Minimum") text(5,min(x),as.character(min(x))) text(5,stats$stats[4],as.character(stats$stats[4])) text(5,stats$stats[3],as.character(stats$stats[3])) text(5,stats$stats[2],as.character(stats$stats[2])) text(5,max(x),as.character(max(x))) #:32 } ) #:27 } } #:21 #34: jitterplot<-function(x,xlim){ x<-unlist(x) set.seed(13) zz<-runif(length(x)) if(missing(xlim)) xlim<-range(pretty(x)) plot(x,zz,ylab="",xlim=xlim) } #:34 #35: stabdiagramm<-function(x,xlim){ if(missing(xlim)) xlim<-range(pretty(x)) counts<-table(x) werte<-as.numeric(names(counts)) plot(c(min(werte),max(werte)),c(0,max(counts)),xlim=xlim, type="n",xlab="x",ylab=paste("*1/",length(x),sep="")) segments(werte,0,werte,counts) } #:35 #36: balkendiagramm<-function(x,breaks){ breaks<-sort(breaks) if(max(x)>breaks[length(breaks)]) breaks<-c(breaks,max(x)) if(min(x)<=breaks[1]) breaks<-c(min(x)-0.001*(max(x)-min(x)),breaks) counts<-table(cut(x,breaks)) namen<-names(counts) for(i in 1:length(namen)){ h1<-nchar(namen[i]) h2<-(1:h1)[substring(namen[i],1:h1,1:h1)=="t"] namen[i]<-paste(substring(namen[i],1,h2-1),"..", substring(namen[i],h2+4,h1),collapse="") } oldpar<-par(mar=c(5.1,12.1,4.1,2.1)) barplot(counts,names=namen,horiz=T,xlab=paste("*1/",length(x),sep="")) par(oldpar) } #:36 #37: stem.and.leaf<-function(x){ stem(x) if(exists("r.flag.r")&exists("out.file")){ if(get("r.flag.r",frame=w.frame.r)&& get("out.file",frame=w.frame.r)!=F)print(stem(x)) } invisible() } #:37 #38: dichtespur.interaktiv<-function(x){ par(mfrow=c(3,1)) w<-(quantile(x,.65)-quantile(x,.35)) bjdpl<-function(x,rel.width=0.001){ set.seed(13); z<-1+runif(length(x)) par(mfg=c(1,1,3,1)); xlim<-c(min(x),max(x)) plot(x,z,ylim=c(0,2),xlab="",ylab="",xlim=xlim) bxpl.data<-boxplot(x,plot=F) if(length(bxpl.data$out)>0) segments(bxpl.data$out,0.2,bxpl.data$out,0.8) lines(c(bxpl.data$stats[3], bxpl.data$stats[4], bxpl.data$stats[4], bxpl.data$stats[2], bxpl.data$stats[2], bxpl.data$stats[3], bxpl.data$stats[3]), c(.2,.2,.8,.8,.2,.2,.8)) segments(bxpl.data$stats[1],.2,bxpl.data$stats[1],.8) segments(bxpl.data$stats[5],.2,bxpl.data$stats[5],.8) segments(bxpl.data$stats[1],.5,bxpl.data$stats[2],.5) segments(bxpl.data$stats[5],.5,bxpl.data$stats[4],.5) h<-density(x,width=rel.width*(max(x)-min(x)),n=100,window="g") par(mfg=c(2,1,3,1)); plot(h,type="l",xlab="",ylab="",xlim=xlim) par(mfg=c(3,1,3,1)) } frame() cat("Ende: EXIT in Graphik anklicken!\n") grin(par.matrix=rbind(lambda=c(-1,3,1,Inf), rel.width =c(0,1,.02,Inf)), expressions=c("xx<-if(lambda!=0)(x^lambda-1)/lambda else log(x)", "bjdpl(xx,rel.width)"), center=cbind(.5,c(.2,.5,.8)), size= matrix(c(0.8,0.2),3,2,T), pic.del=T) par(mfrow=c(1,1)) } #:38 #40: F.dach<-function(xy,breaks,xlim,...){ #39: F.dach.local<-function(x,breaks,xlim,...){ if(is.null(breaks)){ if(missing(xlim)) xlim<-range(x) x<-sort(x) n<-length(x) F.x<-(1:n)/n plot(0:1,0:1,type="n",xlim=xlim,xlab="x",ylab="F.dach") segments(c(x[-n],x[1],x[n]), c(F.x[-n],0:1), c(x[-1],par()$usr[1:2]), c(F.x[-n],0:1),...) points(unique(x),cumsum(table(x))/length(x),pch=4) } else { breaks<-sort(breaks) if(max(x)>breaks[length(breaks)]) breaks<-c(breaks,max(x)) if(min(x)<=breaks[1]) breaks<-c(min(x)-0.001*(max(x)-min(x)),breaks) counts<-table(cut(x,breaks)) F.x<-cumsum(counts)/length(x) if(missing(xlim)) xlim<-range(breaks) plot(c(min(x),max(x)),0:1,type="n",xlim=xlim,xlab="x",ylab="F.dach") lines(breaks,c(0,F.x),...) } } #:39 if(is.matrix(xy)) xy<-split(xy,col(xy)) if(!is.recursive(xy)) xy<-list(xy) if(missing(breaks)) breaks<-NULL if(missing(xlim)) xlim<-range(pretty(unlist(xy))) i<- 0 oldpar<-par()$lty for(el in xy){ F.dach.local(el, breaks=breaks, xlim=xlim, lty=i<-i+1, ...) par(new=T) } par(lty=oldpar); par(new=F) if(i>1){ namen<-names(xy) if(is.null(namen)) namen<-as.character(1:length(xy)) legend(.3*xlim[1]+.7*xlim[2],.7,namen,lty=1:i) } } #:40 #41: F.dach.look.up<-function(x){ print("bitte zweimal Punkt im F.dach-Plot anklicken!") h<-function(x){ xy<-unlist(locator(n=1)) p1<-xy[2]; x1<-xy[1] p <-sum(x<=x1)/length(x) if(p>=p1){ p1<-p } else { x1<-sort(x)[max(1,ceiling(p1*length(x)))] p1<-sum(x<=x1)/length(x) } lines(c(par()$usr[1],x1,x1),c(p1,p1,par()$usr[3])) return(c(x1,p1)) } xy<-rbind(h(x),h(x)) dimnames(xy)<-NULL if(xy[1,1]>xy[2,1]) xy<-xy[2:1,] result<-c("x1" = xy[1,1], "F.dach(x1)" = xy[1,2], "1-F.dach(x1)" =1-xy[1,2], "x2" = xy[2,1], "F.dach(x2)" = xy[2,2], "1-F.dach(x2)" =1-xy[2,2], "F.dach(x2)-F.dach(x1)"=xy[2,2]-xy[1,2]) print(result) invisible() } #:41 #42: scatter<-function(xy,xlim,ylim,hull=0,...){ if(is.matrix(xy)) xy<-split(xy,col(xy)) if(!is.recursive(xy)) xy<-list(xy) if(missing(xlim)) xlim<-range(pretty(unlist(xy[1]))) if(missing(ylim)) ylim<-range(pretty(unlist(xy[2]))) namen<-names(xy)[1:2] if(is.null(namen)) namen<-c("x","y") plot(xy[[1]],xy[[2]],xlim=xlim,ylim=ylim,xlab=namen[1],ylab=namen[2],...) if(hull>0){ HULL<-function(xy,hull){ h<-chull(xy[[1]],xy[[2]],peel=T) h<-split(h$hull,rep(seq(h$count),h$count)) old<-par()$lty for(i in 1:min(hull,length(h))){ j<-h[[i]] if(length(j)>2) polygon(xy[[1]][j],xy[[2]][j],density=0,lty=i) } par(lty=old) } HULL(xy[1:2],hull) } } #:42 #43: dichtespur<-function(xy,xlim,width,...){ if(is.matrix(xy)) xy<-split(xy,col(xy)) if(!is.recursive(xy)) xy<-list(xy) if(missing(xlim)) xlim<-range(pretty(unlist(xy))) if(missing(width)){ print(paste("der Bereich der x-Achse beginnt bei:",xlim[1])) print(paste("und endet bei:",xlim[2])) print("geben Sie die Fensterweite an:") width<-c(scan(,0,n=1),0.1*(xlim[2]-xlim[1]))[1] } h<-NULL; ymax<-0 for(el in xy){ hh<-density(el,width=width,n=100,window="g") .l<-hh$x>=xlim[1] & hh$x<=xlim[2] hh$x<-hh$x[.l];hh$y<-hh$y[.l] h <-c(h,list(hh)) ymax<-max(ymax,hh$y) } plot(0:1,0:1,type="n",xlim=xlim,ylim=c(0,ymax),xlab="x",ylab="f.dach") oldpar<-par()$lty; i<- 0 for(el in h){ lines(el$x,el$y,lty=i<-i+1) } par(lty=oldpar) if(i>1){ namen<-names(xy) if(is.null(namen)) namen<-as.character(1:length(xy)) legend(.3*xlim[1]+.7*xlim[2],.7*ymax,namen,lty=1:i) } } #:43 #44: histogramm<-function(xy,xlim,breaks,nclass ){ if(missing(xlim)) xlim<-range(pretty(c(min(unlist(xy)),max(unlist(xy))))) if(missing(breaks)){ if(missing(nclass)) nclass <- log(length(unlist(xy)), base = 2) + 1 nclass<-ceiling(nclass) breaks<-xlim[1]+(0:nclass)/nclass*(xlim[2]-xlim[1]) } if(is.list(xy)){ OLDPAR<-par() par(mfrow=c(length(xy),1)) for(i in 1:length(xy)) hist(xy[[i]], breaks=breaks, xlim=xlim, probability=T, xlab=getnames(xy)[i],ylab="f.dach") par(OLDPAR) } else hist(xy,xlim=xlim,breaks=breaks,probability=T,xlab="x",ylab="f.dach") } #:44 #45: qqpairsplot<-function(xy){ OLDPAR<-par() par(mfrow=rep(length(xy),2)) for(i in 1:length(xy)) for(j in 1:length(xy)){ qqplot(xy[[i]],xy[[j]], xlab=getnames(xy)[i], ylab=getnames(xy)[j]) abline(0,1) } par(OLDPAR) } #:45 #46: summary.stats<-function(xy,xlim,...){ l.summary<-function(x){ options(digits=7) h<-c(summary(x),"Std.Dev."=var(x)^0.5,n=length(x)) options(digits=5) return(h) } namen<-getnames(xy) if(is.matrix(xy)){ xy<-split(xy,col(xy)) names(xy)<-namen } if(!is.recursive(xy)) return(l.summary(xy)) else return(lapply(xy,l.summary)) } #:46 #47: box.cox.transformation<-function(xy,lambda){ if(is.list(xy)) n<-length(xy) else n<-1 if(is.matrix(xy)) n<-dim(xy)[2] if(missing(lambda)){ if(n>1){ print("Mit welchen lambdas sollen die Werte der Komponenten") print(getnames(xy)) print("transformiert werden?") print(paste("bitte",n,"lambdas eingeben")) } else { print("Mit welchem lambda sollen die Werte von") print(getnames(xy)) print("transformiert werden?") } lam<-c(scan(,0,n=n),rep(1,n))[1:n] } if(is.null(lam))lam<-1 if(length(lam)i) if(length(x)length(hh)) x <-x [1:length(hh)] xy<-split(x,hh) xy } #:51 #52: bootstrap.experiment<-function(xy,n,ZZ,type){ if(missing(n)){ print("Wie gross soll n sein? n=") n <-c(scan(,0,n=1),3)[1] } if(missing(ZZ)){ print("Zufallsgeneratorstart? ZZ=") set.seed(ZZ<-c(scan(,0,n=1),13)[1]) } if(is.matrix(xy)) xy<-split(xy,col(xy)) if(!is.list(xy)) xy<-list(xy) n.ds<-length(xy) stichproben<-NULL for(i in 1:n.ds){ stichproben<-c(stichproben,list(xy[[i]])) for(j in 1:n){ stichproben<-c(stichproben,list(sample(xy[[i]],replace=T))) } } if(missing(type)){ h<-matrix(as.character(rbind(1:n.ds,matrix(letters[1:n],n,n.ds))),n+1,n.ds) boxplot(stichproben, names=h) } else { h<-c("median","mean","3. Quartil","1. Quartil", "s","var", "Interquartils-Abstand") if(type=="?"){ print("Welche Statistik interessiert Sie?") wahl<-Menu(h) } else { wahl<-(1:7)[h==type] } fkt<-switch(wahl, median, mean, function(x)quantile(x,0.75), function(x)quantile(x,0.25), function(x)var(x)^0.5, var, function(x)quantile(x,0.75)-quantile(x,0.25) ) result<-unlist(lapply(stichproben, fkt )) result<-matrix(result,n+1,n.ds)[-1,] boxplot(split(result,col(result)), names=as.character(1:n.ds)) } stichproben } #:52 #53: kt.work<-function(xy,is.xy.kt=F){ #54: if(missing(xy)) xy<-cbind(c(1,1,1,1,1,1,2,2,2,2,3,3,3,1,2,1,3,2,1), c(1,2,1,2,2,1,2,1,1,1,1,2,2,2,1,2,1,2,2)) if(!is.xy.kt){ #57: if(is.list(xy)){ xy<-table(xy[[1]],xy[[2]]) }else{ if(is.matrix(xy)){ xy<-table(xy[,1],xy[,2]) } else { print("ERROR: Input ist keine Datenmatrix");break} } #:57 } kt.abs<-cbind(xy,sum=apply(xy,1,sum)) kt.abs<-rbind(kt.abs,sum=apply(kt.abs,2,sum)) kt.rel<-kt.abs/kt.abs[length(kt.abs)] #58: kt.ind.rel<-outer(kt.rel[,ncol(kt.rel)],kt.rel[nrow(kt.rel),]) kt.ind.abs<-kt.ind.rel*kt.abs[length(kt.abs)] #:58 #59: h<-kt.ind.abs[-nrow(kt.rel),-ncol(kt.rel)] chiq<-sum((kt.abs[-nrow(kt.rel),-ncol(kt.rel)]-h)^2/h) kontingenz.koef<-(chiq/(kt.abs[length(kt.abs)]-chiq))^0.5 #:59 #:54 repeat{ #55: cat("Auswahl:") wahl<-menu(c("Abbruch/Ende", "Tabelle mit Anzahlen ausgeben", "Tabelle mit relative Haeufigkeiten ausgeben", "Tabelle (absolut) bei Unabhaengigkeit ausgeben", "Tabelle (relativ) bei Unabhaengigkeit ausgeben", "Kontingenzkoeffizienten berechnen", "Zeilenverteilung ausgeben", "Spaltenverteilung ausgeben")) #:55 #56: if(wahl==0)break switch(wahl, break, {print("Tabelle mit absoluten Haeufigkeiten"); print(kt.abs)}, {print("Tabelle mit relativen Haeufigkeiten"); print(kt.rel)}, {print("Tabelle abs. Haeufigkeiten bei Unabhaengigkeit") print(kt.ind.abs)}, {print("Tabelle rel. Haeufigkeiten bei Unabhaengigkeit") print(kt.ind.rel)}, {print("Kontingenzkoeffizient") print(kontingenz.koef) print("Chisquare-Wert") print(chiq)}, { #60: print("Welche Zeile?") i<-scan(,0,n=1) cat("absolute Haeufigkeiten\n") print(kt.abs[i,]) cat("relative Haeufigkeiten\n") print(kt.rel[i,]/kt.rel[i,ncol(kt.rel)]) #:60 }, { #61: print("Welche Spalte?") j<-scan(,0,n=1) cat("absolute Haeufigkeiten\n") print(kt.abs[,j]) cat("relative Haeufigkeiten\n") print(kt.rel[,j]/kt.rel[nrow(kt.rel),j]) #:61 } ) #:56 outin() } } #:53 #62: getnames<-function(xy){ if(is.list(xy)){ if(is.null(names(xy))){ return(as.character(1:length(xy))) } else return(names(xy)) } if(is.matrix(xy)){ if(is.null(dimnames(xy)[[2]])){ return(as.character(1:dim(xy)[2])) } else { return(dimnames(xy)[[2]]) } } return("x") } #:62 #63: binomial.calculator<-function(x.F,n,p){ #64: print("binomial.calculator start") if(missing(n)){ print("Bitte n eingeben! (Default: n=1) n=?") n<-c(scan(,0,n=1),1)[1] } if(missing(p)){ print("Bitte p eingeben! (Default: p=0.5) p=?") p<-c(scan(,0,n=1),.5)[1] } #:64 #65: if(missing(x.F)){ a<-1 #66: if(a==1){ print( c("E(X)"=n*p, "Var(X)"=n*p*(1-p), sigma=(n*p*(1-p))^0.5, "E(X)-2sigma"=n*p-2*(n*p*(1-p))^0.5, "E(X)-sigma"=n*p- (n*p*(1-p))^0.5, "E(X)+sigma"=n*p+ (n*p*(1-p))^0.5, "E(X)+2sigma"=n*p+2*(n*p*(1-p))^0.5) ) } else { print( c("E(aX)"=n*p*a, "Var(aX)"=n*p*(1-p)*a^2, sigma=(n*p*(1-p))^0.5*a, "E(aX)-2sigma"=n*p*a-2*(n*p*(1-p))^0.5*a, "E(aX)-sigma"=n*p*a- (n*p*(1-p))^0.5*a, "E(aX)+sigma"=n*p*a+ (n*p*(1-p))^0.5*a, "E(aX)+2sigma"=n*p*a+2*(n*p*(1-p))^0.5*a) ) } #:66 } else { is.F.x<-T if(any(x.F>1)) is.F.x<-F if(all(floor(x.F)==x.F)) is.F.x <-F if(!is.F.x){ x<-x.F print("Werte der Wahrscheinlichkeitsfunktion:") print(cbind(x=x,"f(x)"=dbinom(x,n,p))) print("Werte der Verteilungsfunktion:") print(cbind(x=x,"F(x)"=pbinom(x,n,p))) } if(is.F.x){ print("Quantile:") print(cbind("eingegeben:F(x)"=F.x,x=qbinom(F.x,n,p))) } } #:65 repeat{ #67: print("Auswahl von binomial.calculator") auswahl<-c("Ende","n eingeben","p eingeben", "f(x) und F(x) berechnen","Quantile berechnen", "Statistiken von aX berechnen","Plot erstellen") wahl<-Menu(auswahl) #:67 #68: switch(wahl, break, { print("Bitte n eingeben! (Default: n=1) n=?") n<-c(scan(,0,n=1),1)[1] }, { print("Bitte p eingeben! (Default: p=0.5) p=?") p<-c(scan(,0,n=1),.5)[1] }, { print("Bitte x eingeben! x=?") x<-scan(,0,n=n+1); if(0==length(x)) x<-0:n print("Werte der Wahrscheinlichkeits- und der Verteilungsfunktion:") print(cbind(x=x,"f(x)"=dbinom(x,n,p),"F(x)"=pbinom(x,n,p))) }, { print("Bitte Wahrscheinlichkeiten eingeben! F(x)=?") F.x<-scan(,0,n=n+1) print("Quantile:") print(cbind("eingegeben:F(x)"=F.x,x=qbinom(F.x,n,p))) }, { print("Um welchen Faktor a soll die Zufallsvariable gestreckt werden?") print("(Default: 1)") a<-c(scan(,0,n=1),1)[1] #66: if(a==1){ print( c("E(X)"=n*p, "Var(X)"=n*p*(1-p), sigma=(n*p*(1-p))^0.5, "E(X)-2sigma"=n*p-2*(n*p*(1-p))^0.5, "E(X)-sigma"=n*p- (n*p*(1-p))^0.5, "E(X)+sigma"=n*p+ (n*p*(1-p))^0.5, "E(X)+2sigma"=n*p+2*(n*p*(1-p))^0.5) ) } else { print( c("E(aX)"=n*p*a, "Var(aX)"=n*p*(1-p)*a^2, sigma=(n*p*(1-p))^0.5*a, "E(aX)-2sigma"=n*p*a-2*(n*p*(1-p))^0.5*a, "E(aX)-sigma"=n*p*a- (n*p*(1-p))^0.5*a, "E(aX)+sigma"=n*p*a+ (n*p*(1-p))^0.5*a, "E(aX)+2sigma"=n*p*a+2*(n*p*(1-p))^0.5*a) ) } #:66 }, { x<-0:n ; F.x<-dbinom(x,n,p) h<-F.x>.0001 ; x<-x[h] ; F.x<-F.x[h] plot(x,F.x,type="n",xlab="x",ylab="f(x)") segments(x,0,x,F.x) } ) #:68 } } #:63 #69: geometric.calculator<-function(x.F,p){ #70: print("geometric.calculator start") if(missing(p)){ print("Bitte p eingeben! (Default: p=0.5) p=?") p<-c(scan(,0,n=1),.5)[1] } #:70 #71: if(missing(x.F)){ #72: q<-1-p print( c("E(X)"=q/p, "Var(X)"=q/(p*p), sigma=q^0.5/p, "E(X)-2sigma"=q/p-2*q^0.5/p, "E(X)-sigma"=q/p- q^0.5/p, "E(X)+sigma"=q/p+ q^0.5/p, "E(X)+2sigma"=q/p+2*q^0.5/p) ) #:72 } else { is.F.x<-T if(any(x.F>1)) is.F.x<-F if(all(floor(x.F)==x.F)) is.F.x <-F if(!is.F.x){ x<-x.F print("Werte der Wahrscheinlichkeitsfunktion:") print(cbind(x=x,"f(x)"=dgeom(x,p))) print("Werte der Verteilungsfunktion:") print(cbind(x=x,"F(x)"=pgeom(x,p))) } if(is.F.x){ print("Quantile:") print(cbind("eingegeben:F(x)"=F.x,x=qgeom(F.x,p))) } } #:71 repeat{ #73: print("Auswahl von geometric.calculator") auswahl<-c("Ende","p eingeben", "f(x) und F(x) berechnen","Quantile berechnen", "Statistiken berechnen","Plot erstellen") wahl<-Menu(auswahl) #:73 #74: switch(wahl, break, { print("Bitte p eingeben! (Default: p=0.5) p=?") p<-c(scan(,0,n=1),.5)[1] }, { print("Bitte x eingeben! x=?") n<-(1-p)/p+5*(1-p)^0.5/p x<-scan(,0,n=n+1); if(0==length(x)) x<-0:n print("Werte der Wahrscheinlichkeits- und der Verteilungsfunktion:") print(cbind(x=x,"f(x)"=dgeom(x,p),"F(x)"=pgeom(x,p))) }, { print("Bitte Wahrscheinlichkeiten eingeben! F(x)=?") n<-(1-p)/p+3.5*(1-p)^0.5/p F.x<-scan(,0,n=n+1) print("Quantile:") print(cbind("eingegeben:F(x)"=F.x,x=qgeom(F.x,p))) }, { #72: q<-1-p print( c("E(X)"=q/p, "Var(X)"=q/(p*p), sigma=q^0.5/p, "E(X)-2sigma"=q/p-2*q^0.5/p, "E(X)-sigma"=q/p- q^0.5/p, "E(X)+sigma"=q/p+ q^0.5/p, "E(X)+2sigma"=q/p+2*q^0.5/p) ) #:72 }, { n<-(1-p)/p+5*(1-p)^0.5/p x<-0:n ; F.x<-dgeom(x,p) h<-F.x>.0001 ; x<-x[h] ; F.x<-F.x[h] plot(x,F.x,type="n",xlab="x",ylab="f(x)") segments(x,0,x,F.x) } ) #:74 } } #:69 #75: exponential.calculator<-function(x.F,lambda){ #76: print("exponential.calculator start") if(missing(lambda)){ print("Bitte lambda eingeben! (Default: lambda=1) lambda=?") lambda<-c(scan(,0,n=1),1)[1] } #:76 #77: if(missing(x.F)){ #78: print( c("E(X)"=1/lambda, "Var(X)"=1/(lambda*lambda), sigma=1/lambda, "E(X)-2sigma"=1/lambda-2*1/lambda, "E(X)-sigma"=1/lambda- 1/lambda, "E(X)+sigma"=1/lambda+ 1/lambda, "E(X)+2sigma"=1/lambda+2*1/lambda) ) #:78 } else { is.F.x<-T if(any(x.F>1)) is.F.x<-F if(all(floor(x.F)==x.F)) is.F.x <-F if(!is.F.x){ x<-x.F print("Werte der Dichtefunktion:") print(cbind(x=x,"f(x)"=dexp(x,lambda))) print("Werte der Verteilungsfunktion:") print(cbind(x=x,"F(x)"=pexp(x,lambda))) } if(is.F.x){ print("Quantile:") print(cbind("eingegeben:F(x)"=F.x,x=qexp(F.x,lambda))) } } #:77 repeat{ #79: print("Auswahl von exponential.calculator") auswahl<-c("Ende","lambda eingeben", "f(x) und F(x) berechnen","Quantile berechnen", "Statistiken berechnen","Plot erstellen") wahl<-Menu(auswahl) #:79 #80: switch(wahl, break, { print("Bitte lambda eingeben! (Default: lambda=1) lambda=?") lambda<-c(scan(,0,n=1),1)[1] }, { print("Bitte x eingeben! x=?") x<-scan(,0); if(0==length(x)) x<-(0:20)/20*(3/lambda) print("Werte der Dichtefunktion und der Verteilungsfunktion:") print(cbind(x=x,"f(x)"=dexp(x,lambda),"F(x)"=pexp(x,lambda))) }, { print("Bitte Wahrscheinlichkeiten eingeben! F(x)=?") F.x<-scan(,0) print("Quantile:") print(cbind("eingegeben:F(x)"=F.x,x=qexp(F.x,lambda))) }, { #78: print( c("E(X)"=1/lambda, "Var(X)"=1/(lambda*lambda), sigma=1/lambda, "E(X)-2sigma"=1/lambda-2*1/lambda, "E(X)-sigma"=1/lambda- 1/lambda, "E(X)+sigma"=1/lambda+ 1/lambda, "E(X)+2sigma"=1/lambda+2*1/lambda) ) #:78 }, { x<-(1:200)/lambda/50 ; F.x<-dexp(x,lambda) h<-F.x>.0001 ; x<-x[h] ; F.x<-F.x[h] plot(x,F.x,type="l",xlab="x",ylab="f(x)") } ) #:80 } } #:75 #81: poisson.calculator<-function(x.F,lambda){ #82: print("poisson.calculator start") if(missing(lambda)){ print("Bitte lambda eingeben! (Default: lambda=1) lambda=?") lambda<-c(scan(,0,n=1),1)[1] } #:82 #83: if(missing(x.F)){ #84: print( c("E(X)"=lambda, "Var(X)"=lambda, sigma=lambda^0.5, "E(X)-2sigma"=lambda-2*lambda^0.5, "E(X)-sigma"=lambda- lambda^0.5, "E(X)+sigma"=lambda+ lambda^0.5, "E(X)+2sigma"=lambda+2*lambda^0.5) ) #:84 } else { is.F.x<-T if(any(x.F>1)) is.F.x<-F if(all(floor(x.F)==x.F)) is.F.x <-F if(!is.F.x){ x<-x.F print("Werte der Dichtefunktion:") print(cbind(x=x,"f(x)"=dpois(x,lambda))) print("Werte der Verteilungsfunktion:") print(cbind(x=x,"F(x)"=ppois(x,lambda))) } if(is.F.x){ print("Quantile:") print(cbind("eingegeben:F(x)"=F.x,x=qpois(F.x,lambda))) } } #:83 repeat{ #85: print("Auswahl von poisson.calculator") auswahl<-c("Ende","lambda eingeben", "f(x) und F(x) berechnen","Quantile berechnen", "Statistiken berechnen","Plot erstellen") wahl<-Menu(auswahl) #:85 #86: switch(wahl, break, { print("Bitte lambda eingeben! (Default: lambda=1) lambda=?") lambda<-c(scan(,0,n=1),1)[1] }, { print("Bitte x eingeben! x=?") x<-scan(,0); if(0==length(x)) x<-qpois(.01,lambda):qpois(.99,lambda) print("Werte der Wahrscheinlichkeits- und der Verteilungsfunktion:") print(cbind(x=x,"f(x)"=dpois(x,lambda),"F(x)"=ppois(x,lambda))) }, { print("Bitte Wahrscheinlichkeiten eingeben! F(x)=?") F.x<-scan(,0) print("Quantile:") print(cbind("eingegeben:F(x)"=F.x,x=qpois(F.x,lambda))) }, { #84: print( c("E(X)"=lambda, "Var(X)"=lambda, sigma=lambda^0.5, "E(X)-2sigma"=lambda-2*lambda^0.5, "E(X)-sigma"=lambda- lambda^0.5, "E(X)+sigma"=lambda+ lambda^0.5, "E(X)+2sigma"=lambda+2*lambda^0.5) ) #:84 }, { x<-qpois(.01,lambda):qpois(.99,lambda); F.x<-dpois(x,lambda) h<-F.x>.00001 ; x<-x[h] ; F.x<-F.x[h] plot(x,F.x,type="n",xlab="x",ylab="f(x)") segments(x,F.x,x,0) } ) #:86 } } #:81 #87: normal.calculator<-function(x.F,mu,sigma){ #88: print("normal.calculator start") if(missing(mu)){ #89: print("Bitte Mittel eingeben! (Default: mu=0) mu=?") mu<-c(scan(,0,n=1),0)[1] #:89 } if(missing(sigma)){ #90: print("sigma ist festzulegen!") print("Wenn Sie") print(" Standardabweichung eingeben wollen, bitte 0 eingeben,") print(" Varianz eingeben wollen, bitte 1 eingeben!") print(" (Default -- leere Eingabe: 0)") h<-c(scan(,0,n=1),0)[1] if(h!=1){ print("Bitte STANDARDABWEICHUNG festlegen! (Default: 1) sigma=?") sigma<-abs(c(scan(,0,n=1),1)[1]) } else { print("Bitte VARIANZ festlegen! (Default: 1) sigma^2=?") sigma<-abs(c(scan(,0,n=1),1)[1])^0.5 } #:90 } if(missing(x.F)) x.F<-mu+(-3:3)*sigma #:88 #91: if(missing(x.F)){ #92: print( c("E(X)"=mu, "Var(X)"=sigma^2, sigma=sigma, "E(X)-2sigma"=mu-2*sigma, "E(X)-sigma"=mu- sigma, "E(X)+sigma"=mu+ sigma, "E(X)+2sigma"=mu+2*sigma) ) #:92 #95: x<-x.F xmin<-min(-3.5,qnorm(.01,mu,sigma),x) xmax<-max(3.5,qnorm(.99,mu,sigma),x) z0<-(x-mu)/sigma p.z0<-pnorm(z0) xx<-seq(from=mu-3*sigma,to=mu+3*sigma,length=150) xx<-xx[xmin<=xx&xx<=xmax] Fxx<-pnorm(xx,mu,sigma) fxx<-dnorm(xx,mu,sigma) zz<-seq(from=-3,to=3,length=150) Fzz<-pnorm(zz) fzz<-dnorm(zz) fmax<-max(fxx,fzz) par(mfrow=c(3,2)) # PLOT 1,1 plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n") lines(xx,Fxx) segments(par()$usr[1],0,xx[1],0) segments(par()$usr[2],1,xx[length(xx)],1) abline(v=x) title("F(x)") # PLOT 1,2 plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n") lines(xx,fxx) segments(par()$usr[1],0,xx[1],0) segments(par()$usr[2],0,xx[length(xx)],0) abline(v=x) title("f(x)") # PLOT 2,1 plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="") abline(0,1,lty=2) abline(mu,sigma,lty=4) legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4)) h<-xmin<=z0 & z0<=xmax segments(x,xmax,x,x) segments(x,x,pmin(xmax,pmax(z0,xmin)),x) if(any(h))segments(z0[h],xmin,z0[h],x[h]) title("Transformation") # PLOT 2,2 plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="") abline(0,1,lty=2) abline(mu,sigma,lty=4) legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4)) segments(x,xmax,x,x) segments(x,x,pmin(xmax,pmax(z0,xmin)),x) if(any(h))segments(z0[h],xmin,z0[h],x[h]) title("Transformation") # PLOT 3,1 plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n") lines(zz,Fzz) segments(par()$usr[1],0,zz[1],0) segments(par()$usr[2],1,zz[length(zz)],1) if(any(h))segments(z0[h],1,z0[h],p.z0[h]) if(any(h))segments(z0[h],p.z0[h],xmin,p.z0[h]) title("Verteilungsfunktion von N(0,1)") # PLOT 3,2 plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n") lines(zz,fzz) segments(par()$usr[1],0,zz[1],0) segments(par()$usr[2],0,zz[length(zz)],0) if(any(h))abline(v=z0[h]) title("Dichte von N(0,1)") par(mfrow=c(1,1)) #:95 } else { is.F.x<-T if(any(x.F>1)) is.F.x<-F if(all(floor(x.F)==x.F)) is.F.x <-F if(!is.F.x){ x<-x.F print("Werte der Dichtefunktion und der Verteilungsfunktion:") print(cbind(x=x,"f(x)"=dnorm(x,mu,sigma),"F(x)"=pnorm(x,mu,sigma))) } if(is.F.x){ print("Quantile:") print(cbind("F(x)"=x.F,x=qnorm(x.F,mu,sigma))) } } #:91 repeat{ #93: print("Auswahl von normal.calculator") auswahl<-c("Ende","Mittel festsetzen","Variabilitaet festlegen", "f(x), F(x), (1-F(x)) berechnen","Quantile berechnen", "X verschieben", "X skalieren") wahl<-Menu(auswahl) #:93 #94: switch(wahl, break, { #89: print("Bitte Mittel eingeben! (Default: mu=0) mu=?") mu<-c(scan(,0,n=1),0)[1] #:89 #92: print( c("E(X)"=mu, "Var(X)"=sigma^2, sigma=sigma, "E(X)-2sigma"=mu-2*sigma, "E(X)-sigma"=mu- sigma, "E(X)+sigma"=mu+ sigma, "E(X)+2sigma"=mu+2*sigma) ) #:92 #95: x<-x.F xmin<-min(-3.5,qnorm(.01,mu,sigma),x) xmax<-max(3.5,qnorm(.99,mu,sigma),x) z0<-(x-mu)/sigma p.z0<-pnorm(z0) xx<-seq(from=mu-3*sigma,to=mu+3*sigma,length=150) xx<-xx[xmin<=xx&xx<=xmax] Fxx<-pnorm(xx,mu,sigma) fxx<-dnorm(xx,mu,sigma) zz<-seq(from=-3,to=3,length=150) Fzz<-pnorm(zz) fzz<-dnorm(zz) fmax<-max(fxx,fzz) par(mfrow=c(3,2)) # PLOT 1,1 plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n") lines(xx,Fxx) segments(par()$usr[1],0,xx[1],0) segments(par()$usr[2],1,xx[length(xx)],1) abline(v=x) title("F(x)") # PLOT 1,2 plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n") lines(xx,fxx) segments(par()$usr[1],0,xx[1],0) segments(par()$usr[2],0,xx[length(xx)],0) abline(v=x) title("f(x)") # PLOT 2,1 plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="") abline(0,1,lty=2) abline(mu,sigma,lty=4) legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4)) h<-xmin<=z0 & z0<=xmax segments(x,xmax,x,x) segments(x,x,pmin(xmax,pmax(z0,xmin)),x) if(any(h))segments(z0[h],xmin,z0[h],x[h]) title("Transformation") # PLOT 2,2 plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="") abline(0,1,lty=2) abline(mu,sigma,lty=4) legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4)) segments(x,xmax,x,x) segments(x,x,pmin(xmax,pmax(z0,xmin)),x) if(any(h))segments(z0[h],xmin,z0[h],x[h]) title("Transformation") # PLOT 3,1 plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n") lines(zz,Fzz) segments(par()$usr[1],0,zz[1],0) segments(par()$usr[2],1,zz[length(zz)],1) if(any(h))segments(z0[h],1,z0[h],p.z0[h]) if(any(h))segments(z0[h],p.z0[h],xmin,p.z0[h]) title("Verteilungsfunktion von N(0,1)") # PLOT 3,2 plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n") lines(zz,fzz) segments(par()$usr[1],0,zz[1],0) segments(par()$usr[2],0,zz[length(zz)],0) if(any(h))abline(v=z0[h]) title("Dichte von N(0,1)") par(mfrow=c(1,1)) #:95 }, { #90: print("sigma ist festzulegen!") print("Wenn Sie") print(" Standardabweichung eingeben wollen, bitte 0 eingeben,") print(" Varianz eingeben wollen, bitte 1 eingeben!") print(" (Default -- leere Eingabe: 0)") h<-c(scan(,0,n=1),0)[1] if(h!=1){ print("Bitte STANDARDABWEICHUNG festlegen! (Default: 1) sigma=?") sigma<-abs(c(scan(,0,n=1),1)[1]) } else { print("Bitte VARIANZ festlegen! (Default: 1) sigma^2=?") sigma<-abs(c(scan(,0,n=1),1)[1])^0.5 } #:90 #92: print( c("E(X)"=mu, "Var(X)"=sigma^2, sigma=sigma, "E(X)-2sigma"=mu-2*sigma, "E(X)-sigma"=mu- sigma, "E(X)+sigma"=mu+ sigma, "E(X)+2sigma"=mu+2*sigma) ) #:92 #95: x<-x.F xmin<-min(-3.5,qnorm(.01,mu,sigma),x) xmax<-max(3.5,qnorm(.99,mu,sigma),x) z0<-(x-mu)/sigma p.z0<-pnorm(z0) xx<-seq(from=mu-3*sigma,to=mu+3*sigma,length=150) xx<-xx[xmin<=xx&xx<=xmax] Fxx<-pnorm(xx,mu,sigma) fxx<-dnorm(xx,mu,sigma) zz<-seq(from=-3,to=3,length=150) Fzz<-pnorm(zz) fzz<-dnorm(zz) fmax<-max(fxx,fzz) par(mfrow=c(3,2)) # PLOT 1,1 plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n") lines(xx,Fxx) segments(par()$usr[1],0,xx[1],0) segments(par()$usr[2],1,xx[length(xx)],1) abline(v=x) title("F(x)") # PLOT 1,2 plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n") lines(xx,fxx) segments(par()$usr[1],0,xx[1],0) segments(par()$usr[2],0,xx[length(xx)],0) abline(v=x) title("f(x)") # PLOT 2,1 plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="") abline(0,1,lty=2) abline(mu,sigma,lty=4) legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4)) h<-xmin<=z0 & z0<=xmax segments(x,xmax,x,x) segments(x,x,pmin(xmax,pmax(z0,xmin)),x) if(any(h))segments(z0[h],xmin,z0[h],x[h]) title("Transformation") # PLOT 2,2 plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="") abline(0,1,lty=2) abline(mu,sigma,lty=4) legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4)) segments(x,xmax,x,x) segments(x,x,pmin(xmax,pmax(z0,xmin)),x) if(any(h))segments(z0[h],xmin,z0[h],x[h]) title("Transformation") # PLOT 3,1 plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n") lines(zz,Fzz) segments(par()$usr[1],0,zz[1],0) segments(par()$usr[2],1,zz[length(zz)],1) if(any(h))segments(z0[h],1,z0[h],p.z0[h]) if(any(h))segments(z0[h],p.z0[h],xmin,p.z0[h]) title("Verteilungsfunktion von N(0,1)") # PLOT 3,2 plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n") lines(zz,fzz) segments(par()$usr[1],0,zz[1],0) segments(par()$usr[2],0,zz[length(zz)],0) if(any(h))abline(v=z0[h]) title("Dichte von N(0,1)") par(mfrow=c(1,1)) #:95 }, { print("Bitte x eingeben! x=?") x.F<-scan(,0) if(0==length(x.F)) x.F<-mu+(-3:3)*sigma #92: print( c("E(X)"=mu, "Var(X)"=sigma^2, sigma=sigma, "E(X)-2sigma"=mu-2*sigma, "E(X)-sigma"=mu- sigma, "E(X)+sigma"=mu+ sigma, "E(X)+2sigma"=mu+2*sigma) ) #:92 #95: x<-x.F xmin<-min(-3.5,qnorm(.01,mu,sigma),x) xmax<-max(3.5,qnorm(.99,mu,sigma),x) z0<-(x-mu)/sigma p.z0<-pnorm(z0) xx<-seq(from=mu-3*sigma,to=mu+3*sigma,length=150) xx<-xx[xmin<=xx&xx<=xmax] Fxx<-pnorm(xx,mu,sigma) fxx<-dnorm(xx,mu,sigma) zz<-seq(from=-3,to=3,length=150) Fzz<-pnorm(zz) fzz<-dnorm(zz) fmax<-max(fxx,fzz) par(mfrow=c(3,2)) # PLOT 1,1 plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n") lines(xx,Fxx) segments(par()$usr[1],0,xx[1],0) segments(par()$usr[2],1,xx[length(xx)],1) abline(v=x) title("F(x)") # PLOT 1,2 plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n") lines(xx,fxx) segments(par()$usr[1],0,xx[1],0) segments(par()$usr[2],0,xx[length(xx)],0) abline(v=x) title("f(x)") # PLOT 2,1 plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="") abline(0,1,lty=2) abline(mu,sigma,lty=4) legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4)) h<-xmin<=z0 & z0<=xmax segments(x,xmax,x,x) segments(x,x,pmin(xmax,pmax(z0,xmin)),x) if(any(h))segments(z0[h],xmin,z0[h],x[h]) title("Transformation") # PLOT 2,2 plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="") abline(0,1,lty=2) abline(mu,sigma,lty=4) legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4)) segments(x,xmax,x,x) segments(x,x,pmin(xmax,pmax(z0,xmin)),x) if(any(h))segments(z0[h],xmin,z0[h],x[h]) title("Transformation") # PLOT 3,1 plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n") lines(zz,Fzz) segments(par()$usr[1],0,zz[1],0) segments(par()$usr[2],1,zz[length(zz)],1) if(any(h))segments(z0[h],1,z0[h],p.z0[h]) if(any(h))segments(z0[h],p.z0[h],xmin,p.z0[h]) title("Verteilungsfunktion von N(0,1)") # PLOT 3,2 plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n") lines(zz,fzz) segments(par()$usr[1],0,zz[1],0) segments(par()$usr[2],0,zz[length(zz)],0) if(any(h))abline(v=z0[h]) title("Dichte von N(0,1)") par(mfrow=c(1,1)) #:95 print("Dichte- und Verteilungsfunktion:") print(cbind(x =x.F, "f(x)" =dnorm(x.F,mu,sigma), "F(x)" =pnorm(x.F,mu,sigma), "1-F(x)" =1-pnorm(x.F,mu,sigma))) }, { print("Bitte Wahrscheinlichkeiten eingeben! F(x)=?") Fx<-scan(,0); if(length(Fx)==0) Fx<-c(.05,.1,.25,.5,.75,.9,.95) #92: print( c("E(X)"=mu, "Var(X)"=sigma^2, sigma=sigma, "E(X)-2sigma"=mu-2*sigma, "E(X)-sigma"=mu- sigma, "E(X)+sigma"=mu+ sigma, "E(X)+2sigma"=mu+2*sigma) ) #:92 print("Quantile:") x.F<-qnorm(Fx,mu,sigma) print(cbind("F(x)"=Fx,x=x.F)) #95: x<-x.F xmin<-min(-3.5,qnorm(.01,mu,sigma),x) xmax<-max(3.5,qnorm(.99,mu,sigma),x) z0<-(x-mu)/sigma p.z0<-pnorm(z0) xx<-seq(from=mu-3*sigma,to=mu+3*sigma,length=150) xx<-xx[xmin<=xx&xx<=xmax] Fxx<-pnorm(xx,mu,sigma) fxx<-dnorm(xx,mu,sigma) zz<-seq(from=-3,to=3,length=150) Fzz<-pnorm(zz) fzz<-dnorm(zz) fmax<-max(fxx,fzz) par(mfrow=c(3,2)) # PLOT 1,1 plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n") lines(xx,Fxx) segments(par()$usr[1],0,xx[1],0) segments(par()$usr[2],1,xx[length(xx)],1) abline(v=x) title("F(x)") # PLOT 1,2 plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n") lines(xx,fxx) segments(par()$usr[1],0,xx[1],0) segments(par()$usr[2],0,xx[length(xx)],0) abline(v=x) title("f(x)") # PLOT 2,1 plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="") abline(0,1,lty=2) abline(mu,sigma,lty=4) legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4)) h<-xmin<=z0 & z0<=xmax segments(x,xmax,x,x) segments(x,x,pmin(xmax,pmax(z0,xmin)),x) if(any(h))segments(z0[h],xmin,z0[h],x[h]) title("Transformation") # PLOT 2,2 plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="") abline(0,1,lty=2) abline(mu,sigma,lty=4) legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4)) segments(x,xmax,x,x) segments(x,x,pmin(xmax,pmax(z0,xmin)),x) if(any(h))segments(z0[h],xmin,z0[h],x[h]) title("Transformation") # PLOT 3,1 plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n") lines(zz,Fzz) segments(par()$usr[1],0,zz[1],0) segments(par()$usr[2],1,zz[length(zz)],1) if(any(h))segments(z0[h],1,z0[h],p.z0[h]) if(any(h))segments(z0[h],p.z0[h],xmin,p.z0[h]) title("Verteilungsfunktion von N(0,1)") # PLOT 3,2 plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n") lines(zz,fzz) segments(par()$usr[1],0,zz[1],0) segments(par()$usr[2],0,zz[length(zz)],0) if(any(h))abline(v=z0[h]) title("Dichte von N(0,1)") par(mfrow=c(1,1)) #:95 }, { print("Die Zufallsvariable wird um b verschoben.") print("Bitte b eingeben (Default: b==0) b=?") b<-c(scan(,0,n=1),0)[1] mu<-mu+b #92: print( c("E(X)"=mu, "Var(X)"=sigma^2, sigma=sigma, "E(X)-2sigma"=mu-2*sigma, "E(X)-sigma"=mu- sigma, "E(X)+sigma"=mu+ sigma, "E(X)+2sigma"=mu+2*sigma) ) #:92 #95: x<-x.F xmin<-min(-3.5,qnorm(.01,mu,sigma),x) xmax<-max(3.5,qnorm(.99,mu,sigma),x) z0<-(x-mu)/sigma p.z0<-pnorm(z0) xx<-seq(from=mu-3*sigma,to=mu+3*sigma,length=150) xx<-xx[xmin<=xx&xx<=xmax] Fxx<-pnorm(xx,mu,sigma) fxx<-dnorm(xx,mu,sigma) zz<-seq(from=-3,to=3,length=150) Fzz<-pnorm(zz) fzz<-dnorm(zz) fmax<-max(fxx,fzz) par(mfrow=c(3,2)) # PLOT 1,1 plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n") lines(xx,Fxx) segments(par()$usr[1],0,xx[1],0) segments(par()$usr[2],1,xx[length(xx)],1) abline(v=x) title("F(x)") # PLOT 1,2 plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n") lines(xx,fxx) segments(par()$usr[1],0,xx[1],0) segments(par()$usr[2],0,xx[length(xx)],0) abline(v=x) title("f(x)") # PLOT 2,1 plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="") abline(0,1,lty=2) abline(mu,sigma,lty=4) legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4)) h<-xmin<=z0 & z0<=xmax segments(x,xmax,x,x) segments(x,x,pmin(xmax,pmax(z0,xmin)),x) if(any(h))segments(z0[h],xmin,z0[h],x[h]) title("Transformation") # PLOT 2,2 plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="") abline(0,1,lty=2) abline(mu,sigma,lty=4) legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4)) segments(x,xmax,x,x) segments(x,x,pmin(xmax,pmax(z0,xmin)),x) if(any(h))segments(z0[h],xmin,z0[h],x[h]) title("Transformation") # PLOT 3,1 plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n") lines(zz,Fzz) segments(par()$usr[1],0,zz[1],0) segments(par()$usr[2],1,zz[length(zz)],1) if(any(h))segments(z0[h],1,z0[h],p.z0[h]) if(any(h))segments(z0[h],p.z0[h],xmin,p.z0[h]) title("Verteilungsfunktion von N(0,1)") # PLOT 3,2 plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n") lines(zz,fzz) segments(par()$usr[1],0,zz[1],0) segments(par()$usr[2],0,zz[length(zz)],0) if(any(h))abline(v=z0[h]) title("Dichte von N(0,1)") par(mfrow=c(1,1)) #:95 }, { print("Die Zufallsvariable wird um a gestreckt.") print("Bitte a eingeben (Default: a==1) a=?") a<-c(scan(,0,n=1),1)[1] if(a==0){ print("ERROR: a==0") } else { mu<-a*mu sigma<-abs(a)*sigma #92: print( c("E(X)"=mu, "Var(X)"=sigma^2, sigma=sigma, "E(X)-2sigma"=mu-2*sigma, "E(X)-sigma"=mu- sigma, "E(X)+sigma"=mu+ sigma, "E(X)+2sigma"=mu+2*sigma) ) #:92 #95: x<-x.F xmin<-min(-3.5,qnorm(.01,mu,sigma),x) xmax<-max(3.5,qnorm(.99,mu,sigma),x) z0<-(x-mu)/sigma p.z0<-pnorm(z0) xx<-seq(from=mu-3*sigma,to=mu+3*sigma,length=150) xx<-xx[xmin<=xx&xx<=xmax] Fxx<-pnorm(xx,mu,sigma) fxx<-dnorm(xx,mu,sigma) zz<-seq(from=-3,to=3,length=150) Fzz<-pnorm(zz) fzz<-dnorm(zz) fmax<-max(fxx,fzz) par(mfrow=c(3,2)) # PLOT 1,1 plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n") lines(xx,Fxx) segments(par()$usr[1],0,xx[1],0) segments(par()$usr[2],1,xx[length(xx)],1) abline(v=x) title("F(x)") # PLOT 1,2 plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n") lines(xx,fxx) segments(par()$usr[1],0,xx[1],0) segments(par()$usr[2],0,xx[length(xx)],0) abline(v=x) title("f(x)") # PLOT 2,1 plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="") abline(0,1,lty=2) abline(mu,sigma,lty=4) legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4)) h<-xmin<=z0 & z0<=xmax segments(x,xmax,x,x) segments(x,x,pmin(xmax,pmax(z0,xmin)),x) if(any(h))segments(z0[h],xmin,z0[h],x[h]) title("Transformation") # PLOT 2,2 plot(1,type="n",xlim=c(xmin,xmax),ylim=c(xmin,xmax),xlab="",ylab="") abline(0,1,lty=2) abline(mu,sigma,lty=4) legend(xmin,xmax,legend=c("f(x)=x","x=sigma*z+mu"),lty=c(2,4)) segments(x,xmax,x,x) segments(x,x,pmin(xmax,pmax(z0,xmin)),x) if(any(h))segments(z0[h],xmin,z0[h],x[h]) title("Transformation") # PLOT 3,1 plot(1,xlab="",ylab="",ylim=c(0,1), xlim=c(xmin,xmax), type="n") lines(zz,Fzz) segments(par()$usr[1],0,zz[1],0) segments(par()$usr[2],1,zz[length(zz)],1) if(any(h))segments(z0[h],1,z0[h],p.z0[h]) if(any(h))segments(z0[h],p.z0[h],xmin,p.z0[h]) title("Verteilungsfunktion von N(0,1)") # PLOT 3,2 plot(1,xlab="",ylab="",ylim=c(0,fmax), xlim=c(xmin,xmax), type="n") lines(zz,fzz) segments(par()$usr[1],0,zz[1],0) segments(par()$usr[2],0,zz[length(zz)],0) if(any(h))abline(v=z0[h]) title("Dichte von N(0,1)") par(mfrow=c(1,1)) #:95 } } ) #:94 } } #:87 #96: demo.Laplace<-function(n=10,p=0.5){ #97: par(mfrow=c(1,2)) #:97 repeat{ #98: cat("Geben Sie n ein! n=?\n") n<-max(1,floor(c(scan(,0,n=1),n)[1])) cat("Geben Sie p ein! p=?\n") p<-c(scan(,0,n=1),p)[1] p<-max(.0001,min(.9999,p)) #:98 #100: sigma<-((mu<-n*p)*(1-p))^0.5 x<-0:n; if(n>19)x<-x[x>mu-5*sigma&x19){ x<-x[y>0.0001] y<-y[y>0.0001] } xnorm<-seq(from=mu-5*sigma,to=mu+5*sigma,length=250) xnorm<-xnorm[xnorm>=min(x)&xnorm<=max(x)] ynorm<-dnorm(xnorm,mu,sigma) ymax<-max(y,ynorm) plot(x,y,ylab="f(x)",ylim=c(0,ymax)) segments(x,0,x,y) lines(xnorm,ynorm) title(paste("WS-Funktion/NV-Dichte\nn=",n,", p=",p)) #:100 #101: d <-y- (pnorm(x,mu,sigma)-pnorm(x-1,mu,sigma)) cd<-pbinom(x,n,p)-pnorm(x,mu,sigma) plot(x,cd,ylab="error",ylim=c(min(0,d,cd),max(0,d,cd))) segments(x,0,x,d) abline(h=0) title("Fehler:f()-Approximation\n(Punkte:Fehler,kumuliert)") #:101 #99: cat("Wollen Sie die Funktion beenden? (j=ja)\n") wahl<-c(scan(,"",n=1),"n")[1] if(wahl=="j") break #:99 } #102: par(mfrow=c(1,1)) #:102 } #:96 #103: demo.zgws<-function(model="norm",n=10,runs=100,...){ #104: #105: ynorm<-pnorm(xnorm<-(-80:80)/20) #110: cat("Modell / Aus welcher Verteilung sollen\n") cat("Stichproben gezogen werden (Default: Normalverteilung)?\n") wahl<-Menu(c( "Abbruch/Ende", "Normalverteilung", "Exponentialverteilung", "Gleichverteilung", "Cauchy-Verteilung", "Binomialverteilung", "Poisson-Verteilung")) if(wahl==0) break switch(wahl, break, { cat("Bitte Mittel der Normalverteilung eingeben (Default: 0)!\n") mue<-c(scan(,0,n=1),0)[1] cat("Bitte Standardabweichung eingeben (Default: 1)!\n") sigma<-c(scan(,0,n=1),1)[1] if(sigma<=0){cat("ERROR: sigma nicht positiv!\n"); sigma<-1} realisiere.stpr<-"rnorm(n*runs,mue,sigma)" legend<-paste("NV(",mue,",",sigma,")",sep="") },{ cat("Bitte LAMBDA der Exponentialverteilung eingeben (Default: 1)!\n") lambda<-c(scan(,0,n=1),1)[1] if(lambda<=0){cat("ERROR: lambda nicht positiv!\n"); lambda<-1} realisiere.stpr<-"rexp(n*runs,lambda)" legend<-paste("Exp(",lambda,")",sep="") },{ cat("Bitte Untergrenze der Gleichverteilung eingeben (Default: 0)!\n") ug<-c(scan(,0,n=1),0)[1] cat("Bitte Obergrenze eingeben (Default: 1)!\n") og<-c(scan(,0,n=1),1)[1] if(og<=ug){cat("ERROR: Grenzen falsch!\n"); og<-1+ug<-0} realisiere.stpr<-"runif(n*runs,ug,og)" legend<-paste("U(",ug,",",og,")",sep="") },{ cat("Bitte Zentrum der Cauchy-Verteilung eingeben (Default: 0)!\n") mue<-c(scan(,0,n=1),0)[1] cat("Bitte Skalenparameter eingeben (Default: 1)!\n") sigma<-c(scan(,0,n=1),1)[1] if(sigma<=0){cat("ERROR: Skalenparameter nicht positiv!\n"); sigma<-1} realisiere.stpr<-"rcauchy(n*runs,mue,sigma)" legend<-paste("Cauchy(",mue,",",sigma,")",sep="") },{ cat("Bitte n der Binomialverteilung eingeben (Default: 1)!\n") nbin<-floor(c(scan(,0,n=1),1)[1]) cat("Bitte p eingeben (Default: 0.5)!\n") p<-c(scan(,0,n=1),0.5)[1] if(nbin<=0){cat("ERROR: n nicht positiv!\n"); nbin<-1} if(p<=0|p>=1){cat("ERROR: p falsch!\n"); p<-0.5} realisiere.stpr<-"rbinom(n*runs,nbin,p)" legend<-paste("Binom(",nbin,",",p,")",sep="") },{ cat("Bitte LAMBDA der Poisson-Verteilung eingeben (Default: 1)!\n") lambda<-c(scan(,0,n=1),1)[1] if(lambda<=0){cat("ERROR: lambda nicht positiv!\n"); lambda<-1} realisiere.stpr<-"rpois(n*runs,lambda)" legend<-paste("Poisson(",lambda,")",sep="") } ) # end of switch cat("Bitte Umfang der einzelnen Stichproben eingeben! (Default: 5)\n") n<-max(1,min(floor(c(scan(n=1),5)[1]),100000)) cat("Bitte Umfang der Wiederholungen eingeben! (Default: 100)\n") runs<-max(1,min(floor(c(scan(n=1),100)[1]),10000)) cat("Bitte Start des Zufallszahlengenerators eingeben! (Default: 13)\n") set.seed(max(1,min(floor(c(scan(n=1),13)[1]),999))) #:110 par(mfrow=1:2) #:105 repeat{ #107: x<-eval(parse(text=realisiere.stpr)) x<-matrix(x,n,runs) #:107 #108: xsum<-apply(x,2,sum) xsum<-xsum-mean(xsum) xsum<-xsum/sqrt(var(xsum)) #:108 #109: plot(c(-4,4),c(0,1),type="n",xlab="transformierte Mittel",ylab="F.dach, Phi") points(sort(xsum),(1:length(xsum))/length(xsum)) lines(xnorm,ynorm) text(-3,0.9,legend) text(-3,0.8,paste("n =",n)) title("empirische Verteilung\ntransformierte Mittel") pfade<-apply(x,2,cumsum)/matrix(1:n,n,runs) yminmax<-range(pfade[,1:min(15,runs)]) plot(1,xlim=c(1,n),ylim=yminmax,xlab="x",ylab="Mittel bis x") title("Entwicklung der Mittel") for(i in 1:min(15,runs)) lines(1:n,pfade[,i]) #:109 #110: cat("Modell / Aus welcher Verteilung sollen\n") cat("Stichproben gezogen werden (Default: Normalverteilung)?\n") wahl<-Menu(c( "Abbruch/Ende", "Normalverteilung", "Exponentialverteilung", "Gleichverteilung", "Cauchy-Verteilung", "Binomialverteilung", "Poisson-Verteilung")) if(wahl==0) break switch(wahl, break, { cat("Bitte Mittel der Normalverteilung eingeben (Default: 0)!\n") mue<-c(scan(,0,n=1),0)[1] cat("Bitte Standardabweichung eingeben (Default: 1)!\n") sigma<-c(scan(,0,n=1),1)[1] if(sigma<=0){cat("ERROR: sigma nicht positiv!\n"); sigma<-1} realisiere.stpr<-"rnorm(n*runs,mue,sigma)" legend<-paste("NV(",mue,",",sigma,")",sep="") },{ cat("Bitte LAMBDA der Exponentialverteilung eingeben (Default: 1)!\n") lambda<-c(scan(,0,n=1),1)[1] if(lambda<=0){cat("ERROR: lambda nicht positiv!\n"); lambda<-1} realisiere.stpr<-"rexp(n*runs,lambda)" legend<-paste("Exp(",lambda,")",sep="") },{ cat("Bitte Untergrenze der Gleichverteilung eingeben (Default: 0)!\n") ug<-c(scan(,0,n=1),0)[1] cat("Bitte Obergrenze eingeben (Default: 1)!\n") og<-c(scan(,0,n=1),1)[1] if(og<=ug){cat("ERROR: Grenzen falsch!\n"); og<-1+ug<-0} realisiere.stpr<-"runif(n*runs,ug,og)" legend<-paste("U(",ug,",",og,")",sep="") },{ cat("Bitte Zentrum der Cauchy-Verteilung eingeben (Default: 0)!\n") mue<-c(scan(,0,n=1),0)[1] cat("Bitte Skalenparameter eingeben (Default: 1)!\n") sigma<-c(scan(,0,n=1),1)[1] if(sigma<=0){cat("ERROR: Skalenparameter nicht positiv!\n"); sigma<-1} realisiere.stpr<-"rcauchy(n*runs,mue,sigma)" legend<-paste("Cauchy(",mue,",",sigma,")",sep="") },{ cat("Bitte n der Binomialverteilung eingeben (Default: 1)!\n") nbin<-floor(c(scan(,0,n=1),1)[1]) cat("Bitte p eingeben (Default: 0.5)!\n") p<-c(scan(,0,n=1),0.5)[1] if(nbin<=0){cat("ERROR: n nicht positiv!\n"); nbin<-1} if(p<=0|p>=1){cat("ERROR: p falsch!\n"); p<-0.5} realisiere.stpr<-"rbinom(n*runs,nbin,p)" legend<-paste("Binom(",nbin,",",p,")",sep="") },{ cat("Bitte LAMBDA der Poisson-Verteilung eingeben (Default: 1)!\n") lambda<-c(scan(,0,n=1),1)[1] if(lambda<=0){cat("ERROR: lambda nicht positiv!\n"); lambda<-1} realisiere.stpr<-"rpois(n*runs,lambda)" legend<-paste("Poisson(",lambda,")",sep="") } ) # end of switch cat("Bitte Umfang der einzelnen Stichproben eingeben! (Default: 5)\n") n<-max(1,min(floor(c(scan(n=1),5)[1]),100000)) cat("Bitte Umfang der Wiederholungen eingeben! (Default: 100)\n") runs<-max(1,min(floor(c(scan(n=1),100)[1]),10000)) cat("Bitte Start des Zufallszahlengenerators eingeben! (Default: 13)\n") set.seed(max(1,min(floor(c(scan(n=1),13)[1]),999))) #:110 } #106: par(mfrow=c(1,1)) #:106 #:104 } #:103 #111: qq.x.model<-function(x,model,parameter){ #112: mods<-c("norm","exp","pois","geom","lnorm") if(missing(model)){ cat("Welches Modell?\n") wahl<-Menu(c("Normalverteilung", "Exponentialverteilung", "Poisson-Verteilung", "geometrische Verteilung", "Lognormalverteilung")) model<-mods[wahl] } model<-model[1] if(is.character(model[1])) model<-(1:length(mods))[mods==model] if(0==length(model) || 11 y<-y[h]/length(x) x<-as.numeric(names(y)) y<-log(y)+log(gamma(x+1)) plot(x,y,xlab="x",ylab="") r<-c(l1fit(x,y)$coef) abline(r) r<- c(-r[1],exp(r[2])) names(r)<-c("lambda.dach1","lambda.dach2") r } #:116 #117: geom.p.est<-function(x){ n<-length(x) yy_table(x); xx_as.numeric(names(yy)) yy_as.vector(yy); names(yy)_NULL plot(xx,log(yy/n),xlab="Wartezeit",ylab="log(n.i/n)") h_floor((length(yy))/2) abline(r_l1fit(xx[1:h],log(yy[1:h]/n))$coef) r_abs((0:1)-exp(r)) names(r)_c("p aus Achsenabschnitt","p aus Steigung") return(r) } #:117 #118: interval.est.lambda<-function(x){ cat("Belastungsrate im Zeitablauf\n") print("Geben Sie die Anzahl der Ereignisse an, die zusammen betrachtet") print("werden sollen! Es duerfen auch mehrere (maximal 9)") print("Anzahlen eingegeben werden. (Default: 5 10 20) Anzahlen=?") anz.set<-scan(,0,n=9); if(length(anz.set)==0) anz.set<-c(5,10,20) par(mfrow=matrix(c(1,1, 1,2, 1,3, 2,2, 2,3, 2,3, 3,3, 3,3, 3,3),2,9) [,length(anz.set)]) for(anz in anz.set){ if(all(x==sort(x))) h<-x else h<-cumsum(x) hx<-.5*(h[(1+anz):length(h)]+h[1:(length(h)-anz)]) hy<-anz/(h[(1+anz):length(h)]-h[1:(length(h)-anz)]) plot(hx,hy,type="l",xlab="time",ylab="Belastung") title(paste("anz =",anz)) } par(mfrow=c(1,1)) } #:118 #119: revbook.report<-function(){ repeat{ #120: auswahl<-c( "Abbruch/Ende", "leere Report", "fuege Text-Zeile an den Report an", "fuege Text-Zeile ein", "kopiere Plot in den Report", "entferne Zeilen aus Report", "zeige Roh-Report an", "verarbeite Report", "drucke Report" ) wahl<-Menu(auswahl,report=F) #:120 #121: switch(wahl, { break },{ #122: cat(" Revbook-Report leeren\n") cat("Sind Sie sicher, dass der alte Report \n") cat("geloescht werden soll? Fall ja j eingeben!\n") h<-paste(readline(),"n",sep="") if("j"==substring(h,1,1)){ unix("echo @ > revbookreport.rev",,F) cat(" Revbook-Report wurde geloescht\n") }else{ cat(" Revbook-Report wurde NICHT geloescht\n") } #:122 },{ #123: cat(" Revbook-Report um Textzeile verlaengern\n") cat("Geben Sie die Text-Zeile ein:\n") h<-readline() if(nchar(h)>0){ write(h,".tmp") unix(paste("cat .tmp >","> revbookreport.rev",sep="")) } else { unix(paste("echo @ >","> revbookreport.rev",sep="")) } #:123 },{ #124: cat("Textzeile in Revbook-Report einfuegen\n") cat("Geben Sie die Nummer der Zeile ein, hinter\n") cat("der die neue Zeile eingefuegt werden soll!\n") h<-readline() h<-substring(h,1:nchar(h),1:nchar(h)) no<-h[grep(c("0","1","2","3","4","5","6","7","8","9",),h)] if(length(no)>0){ no<-paste(no,collapse="") cat("Geben Sie die Text-Zeile ein:\n") h<-readline() if(nchar(h)>0){ unix(paste("head -n",no,"revbookreport.rev > .tmphead")) write(h,".tmp") eval(parse(text=paste("no<-1+as.numeric(no)"))) unix(paste("tail -n +",no," revbookreport.rev>.tmptail",sep="")) unix("cat .tmphead .tmp .tmptail > revbookreport.rev") } } else { cat("Es wurde keine Nummer eingegeben!\n") } #:124 },{ #125: cat("Plot in Report kopieren\n") cat("Geben Sie die Nummer der Zeile ein, hinter\n") cat("der der Plot eingefuegt werden soll!\n") h<-readline() h<-substring(h,1:nchar(h),1:nchar(h)) no<-h[grep(c("0","1","2","3","4","5","6","7","8","9",),h)] if(length(no)==0) no<-"9999" no<-paste(no,collapse="") cat("Geben Sie einen Namen fÏr das Bild ein!\n") h<-paste(readline(),".ps",sep="") if(nchar(h)>3){ dev.copy(postscript,file=h,horizontal=F, height=4,width=4) if(names(dev.cur())=="postscript") dev.off() h<-paste("{\\psfig{figure=",h,",height=5cm,width=5cm}}\n\n",sep="") h<-paste("\n\n\\centerline",h,sep="") write(h,".tmp") if(no!="9999"){ unix(paste("head -n",no,"revbookreport.rev > .tmphead")) eval(parse(text=paste("no<-1+as.numeric(no)"))) unix(paste("tail -n +",no," revbookreport.rev>.tmptail",sep="")) unix("cat .tmphead .tmp .tmptail > revbookreport.rev") } else { unix("cat .tmp >> revbookreport.rev") } } else { cat("Ohne Namen keine Kopie!\n") } #:125 },{ #126: cat("Zeilen aus Report entfernen\n") cat("Geben Sie die Nummer der ersten und die der\n") cat("letzten Zeile ein, die geloescht werden soll!\n") h<-readline() if(nchar(h)>0){ h<-substring(h,1:nchar(h),1:nchar(h)) no<-h[grep(c(" ","0","1","2","3","4","5","6","7","8","9",),h)] no[no==" "]<-"," no<-paste(no,collapse="") no<-eval(parse(text=paste("c(",no,",-1,-2)")))[1:2] if(no[1]>0){ if(no[2]<0) no[2]<-no[1] unix(paste("head -n",no[1]-1,"revbookreport.rev > .tmphead")) unix(paste("tail -n +",no[2]+1," revbookreport.rev>.tmptail",sep="")) unix("cat .tmphead .tmptail > revbookreport.rev") cat(paste("Report von Zeile",no[1],"bis",no[2],"geloescht\n")) } } #:126 },{ #127: cat(" Revbook-Report zeigen\n") unix("pr -n:3 revbookreport.rev|more",,F) #:127 },{ #128: cat("verarbeite Report\n") unix( "cat report.head > h.rev",,F) unix(paste("cat revbookreport.rev >","> h.rev",sep=""),,F) unix(paste("cat report.tail >","> h.rev",sep=""),,F) unix(paste("noweave -index -delay -filter /opt/revweb/lib/umlaute", "h.rev > h.tex"),,F) unix("echo q | latex h",,F) unix("dvips h",,F) cat("Anzeige des Reports mit dem Programm ghostview\n") cat("ENDE von ghostview: Taste Q \n") unix("ghostview h.ps",,F) #:128 },{ #129: cat("dps h.ps\n") #:129 } ) #:121 } invisible() } #:119 #130: select.spalte<-function(dm=rubber){ #131: cat("\n\n") cat("+-----------------------------------------------------------+\n") cat("|Programm zur Selektion eines Merkmals aus einer Datenmatrix|\n") cat("+-----------------------------------------------------------+\n\n") cat(" Mit diesem Programm koennen Sie aus der Datenmatrix\n") cat(" eine Merkmalsspalte auswaehlen.\n") cat(" Danach koennen Sie mittels eines zweiten Merkmals\n") cat(" die ausgewaehlte Spalte verkuerzen.\n") cat(" BITTE RETURN druecken \n\n") readline() if(is.list(dm)) dm<-dm[[1]] if(!is.matrix(dm)) dm<-cbind(dm) if(is.null(dimnames(dm))) dimnames(dm)<-list(NULL,1:ncol(dm)) if(0==length(dimnames(dm)[[2]])) dimnames(dm)[[2]]<-1:ncol(dm) nspalten<-ncol(dm) dm.out<-NULL #:131 #132: cat(paste(" Die Datenmatrix hat",nspalten,"Spalten.\n")) cat(" Hier ist die Liste der Spaltennamen mit den Spaltennummern:\n\n") print(rbind(dimnames(dm)[[2]])) cat("\n") cat(" Welche Spalte wollen Sie auswaehlen?\n") cat(" Geben Sie die Nummer der von Ihnen gewuenschten Spalte an!\n") wahl<-c(scan(,0,n=1),1)[1] wahl<-floor(wahl) wahl<-wahl[wahl<=nspalten & wahl>0] if(0==length(wahl)){ print("ERROR: Falsche Eingabe - ABBRUCH") break } dm.h<-dm[,wahl] #:132 #133: cat("\n") cat("Auswahl von Teilelementen der gerade gewaehlten Spalte\n") cat("------------------------------------------------------\n") cat(" Nun koennen Elemente der gewaehlte Spalte durch Festlegung\n") cat(" einer Bedingungen ausgewaehlt/ausgeschlossen werden.\n") cat("\n") cat(" Hier ist die Liste der Spaltennamen mit den Spaltennummern.\n\n") print(rbind(dimnames(dm)[[2]])) cat("\n") cat(" Welche Spalte wird fuer die Bedingung benoetigt?\n") cat(" Eine leere Eingabe fuehrt zu keiner (weiteren) Reduktion.\n") wahl<-scan(,0,n=1) if(length(wahl)>0){ wahl<-floor(wahl) wahl<-wahl[wahl<=nspalten & wahl>0] key<-dm[,wahl] cat("\n Hier ist ein Ausdruck der Spalte fuer die Bedingung:\n") print(key) cat(" Welchen Typ von Bedingung wuenschen Sie?\n") relation<-Menu(c("Bedingungs-Spalte < Zahl", "Bedingungs-Spalte = Zahl", "Bedingungs-Spalte > Zahl")) cat(" Die Vergleichszahl soll sein:\n") zahl<-scan(,0,n=1) cat("\n") switch(relation, log.vec<-key < zahl, log.vec<-key ==zahl, log.vec<-key > zahl) dm.h<-dm.h[log.vec] } #:133 #134: dm.out<-dm.h return(dm.out) #:134 } #:130 #135: select.and.split<-function(dm=rubber){ #136: cat("\n\n") cat("+--------------------------------------------------------------+\n") cat("|Programm zur Auswahl von Merkmalsspalten aus einer Datenmatrix|\n") cat("+--------------------------------------------------------------+\n\n") cat(" Mit diesem Programm koennen Sie aus der Datenmatrix eine Spalte\n") cat(" auswaehlen und dann mittels eines anderen Merkmals aufsplitten,\n") cat(" oder sie kÎnnen mehrere verschiedene Spalten auswaehlen.\n") cat(" BITTE RETURN druecken \n\n") readline() if(is.list(dm)) dm<-dm[[1]] if(!is.matrix(dm)) dm<-cbind(dm) if(is.null(dimnames(dm))) dimnames(dm)<-list(NULL,1:ncol(dm)) if(0==length(dimnames(dm)[[2]])) dimnames(dm)[[2]]<-1:ncol(dm) nspalten<-ncol(dm) #:136 #137: cat(paste(" Die Datenmatrix hat",nspalten,"Spalten.\n")) cat(" Hier ist die Liste der Spaltennamen mit den Spaltennummern:\n\n") print(rbind(dimnames(dm)[[2]])) cat("\n") cat(" Welche Spalte(n) wollen Sie auswaehlen?\n") cat(" Geben Sie die Nummer(n) der von Ihnen gewuenschten Spalte an!\n") wahl<-scan(,0) wahl<-floor(wahl) wahl<-wahl[wahl<=nspalten & wahl>0] if(0==length(wahl)){ print("ERROR: Falsche Eingabe - ABBRUCH") break } dm.h<-dm[,wahl] if(is.matrix(dm.h)) { if(is.null(dimnames(dm.h)[[2]])){ namen<-paste("vorher",wahl) } else { namen<-dimnames(dm.h)[[2]] } dm.h<-split(dm.h,col(dm.h)) names(dm.h)<-namen } #:137 #138: if(length(wahl)==1){ cat("\n") cat(" Nun koennen Elemente der gewaehlte Spalte gemaess den\n") cat(" Merkmalsauspraegungen einer anderen Spalte gesplittet werden.\n") cat("\n") cat(" Hier ist die Liste der Spaltennamen mit den Spaltennummern.\n\n") print(rbind(dimnames(dm)[[2]])) cat("\n") cat(" Welche Spalte soll zum Splitten ausgewaehlt werden?\n") cat(" Eine leere Eingabe fuehrt nicht zu einer Zerlegung.\n") wahl<-scan(,0,n=1) if(length(wahl)>0){ wahl<-floor(wahl) wahl<-wahl[wahl<=nspalten & wahl>0] if(wahl<=nspalten & wahl>0) { dm.h<-split(dm.h,dm[,wahl]) names(dm.h)<-names(table(dm[,wahl])) } } } #:138 #139: return(dm.h) #:139 } #:135 synchronize() detach("_Revbook") attach("_Revbook") print("Definition erfolgreich beendet - 02.6.97") #:1