Java Mailing List Archive

http://www.r-help.com/

Home » Home (12/2007) » R Help for Statistical Computing »

[R] Problem saving logic regression result equation to disk file

Glynn, Earl

2005-02-23

Replies:

I want to get some "simple" logic regression examples to work before
exploring a hard problem.

I can get results, but I'm having some problems using "cat" to save the
logic regression equation to a disk file.

Consider this:

# Simple Logic Regression Example
# efg, 23 Feb 2005

library(LogicReg)

# Create simulated data with known logic equation:

# "noise" logic matrix
X <- matrix(as.numeric(runif(160) < 0.5), 20,8)
colnames(X) <- paste("X", 1:ncol(X), sep="")
rownames(X) <- paste("case", 1:nrow(X), sep="")

# Define expected result: Y = (NOT X2) AND X6
Y <- as.numeric(!X[,2] & X[,6])

# set seed for reproducible test
set.seed(19937)

# 100 interations too few: some results in single node with |Parameter| < 1
Annealing <- logreg.anneal.control(start = -1, end = -4, iter = 500, update
= 50)

logicfit <- logreg(resp=Y, bin=X,
            type = REGRESSION.TYPE<-2,
            select = FIT.SINGLE.MODEL<-1,
            ntrees=1,
            nleaves=2,  # force shape of final tree
            anneal.control=Annealing)

# I don't always want to see the plot
plot(logicfit)

# I'd like to write my regression equation to a file and
# then run many times to test my parameter selection
# with a known case before exploring unknown cases

logicfit

# In this case I want either of these equivalent answers
# (equivalent via DeMorgan's Theorem), and no others,
# such as single node results.

I want to run this say 100s (later 1000s) of times and look at the variation
in the results. I want to figure out what parameters I should use so I only
see these results:

score 0
+1 * (X6 and (not X2))


-1 * ((not X6) or X2)


# I can't use cat to write this model to a file:
> cat(logicfit)
Error in cat(list(...), file, sep, fill, labels, append) :
    argument 1 not yet handled by cat


> summary(logicfit)
         Length Class     Mode
nsample       1   -none-    numeric
nbinary       1   -none-    numeric
nseparate     1   -none-    numeric
type         1   -none-    character
select       1   -none-    character
anneal.control  5   -none-    list
tree.control   4   -none-    list
seed         1   -none-    numeric
choice       1   -none-    numeric
nleaves       1   -none-    numeric
ntrees       1   -none-    numeric
penalty       1   -none-    numeric
response     20   -none-    numeric
binary      160   -none-    numeric
separate      1   -none-    numeric
censor       20   -none-    numeric
weight       20   -none-    numeric
model        5   logregmodel list
call         8   -none-    call

# Just the logicfit$model would be good enough but I can't "cat" that
either:

> logicfit$model
+1 * (X6 and (not X2))
> cat(logicfit$model)
Error in cat(list(...), file, sep, fill, labels, append) :
    argument 1 not yet handled by cat

Using sink to get this result seems to be a huge kludge:
> sink("saveresults.txt")
> logicfit$model
> sink()
> results <- readLines("saveresults.txt")
> results
[1] " +1 * (X6 and (not X2))"

# FINALLY something I could write this result to a file:.
> cat(results, "\n")
+1 * (X6 and (not X2))


What is a simple way to get my logic regression equation as a string that I
can "cat"
without dealing with the internal data structures that are present here?

Thanks for any help with this.

efg
--
Earl F. Glynn
Scientific Programmer
Bioinformatics Department
Stowers Institute for Medical Research

______________________________________________
R-help@(protected)
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
©2008 r-help.com - Jax Systems, LLC, U.S.A.