I am writing a little abstraction for a series of tests. For example,
I am running an anova and kruskal.test on a one-factor model. That
isn't a particular problem, I have an interface like:
my.function <- function(model,data) {
print(deparse(substitute(data)))
a <- anova(lm(formula,data))
print(a)
if(a$"Pr(>F)"[1] < 0.05) {
pairwise.t.test(???)
}
b <- kruskal.test(formula,data)
print(b)
if ...
}
I want to run each test, then depending on the resulting p-value, run
pairwise tests. I am getting into trouble where I put the ??? above.
The pairwise.t.test has a different interface, that seems to want me
to dismember the formula into constituent parts to feed in. The other
alternative is to give my.function the constituent parts and let it
build the model. I haven't figured out how to do either one. Can
someone give me some pointers?
--
Russell Senior ``I have nine fingers; you have ten.''
seniorr at aracnet.com
Russell Senior wrote:> I am writing a little abstraction for a series of tests. For example, > I am running an anova and kruskal.test on a one-factor model. That > isn't a particular problem, I have an interface like: > > my.function <- function(model,data) { > print(deparse(substitute(data))) > a <- anova(lm(formula,data)) > print(a) > if(a$"Pr(>F)"[1] < 0.05) { > pairwise.t.test(???) > } > b <- kruskal.test(formula,data) > print(b) > if ... > } > > I want to run each test, then depending on the resulting p-value, run > pairwise tests. I am getting into trouble where I put the ??? above. > The pairwise.t.test has a different interface, that seems to want me > to dismember the formula into constituent parts to feed in. The other > alternative is to give my.function the constituent parts and let it > build the model. I haven't figured out how to do either one. Can > someone give me some pointers? >See ?formula and its "See Also" Section on how to do formula manipulation. There's also an example on how to construct a formula. Uwe Ligges
>>>>> "Uwe" == Uwe Ligges <ligges at statistik.uni-dortmund.de> writes:Russell> I am writing a little abstraction for a series of tests. For Russell> example, I am running an anova and kruskal.test on a Russell> one-factor model. That isn't a particular problem, I have an Russell> interface like: my.function <- function(model,data) { Russell> print(deparse(substitute(data))) a <- anova(lm(formula,data)) Russell> print(a) if(a$"Pr(>F)"[1] < 0.05) { pairwise.t.test(???) } b Russell> <- kruskal.test(formula,data) print(b) if ... } I want to Russell> run each test, then depending on the resulting p-value, run Russell> pairwise tests. I am getting into trouble where I put the Russell> ??? above. The pairwise.t.test has a different interface, Russell> that seems to want me to dismember the formula into Russell> constituent parts to feed in. The other alternative is to Russell> give my.function the constituent parts and let it build the Russell> model. I haven't figured out how to do either one. Can Russell> someone give me some pointers? Uwe> See ?formula and its "See Also" Section on how to do formula Uwe> manipulation. There's also an example on how to construct a Uwe> formula. Russell> In order to use the 'as.formula(paste(response," ~ Russell> ",factor))' approach, response and factor seem to need to be Russell> strings (at least they seem to if response is "log(x)" or the Russell> like). Whereas, for pairwise.t.test they need to be names. Russell> What is the proper way to do that? Uwe> In order to run pairwise.t.test() you can simply get() the values Uwe> from objects: Uwe> Let's change the example in ?pairwise.t.test: Uwe> data(airquality) Uwe> attach(airquality) Uwe> Month <- factor(Month, labels = month.abb[5:9]) Uwe> x <- "Ozone" Uwe> y <- "Month" Uwe> pairwise.t.test(get(x), get(y)) Suppose I want x to be "log(Ozone)"? The get() function doesn't help me there. -- Russell Senior ``I have nine fingers; you have ten.'' seniorr at aracnet.com