[R] xyplot: discrete points + continuous curve per panel

RMan54 RMan54 at cox.net
Fri Dec 15 07:13:25 CET 2006


Great. I will be trying to use panel.curve and pass a custom curve function
as first argument (called test() below). I can use which. packet to get
access to the panel number to produce the correct curve for each panel but
what I really need is the active Subj (actSubj) for each panel. Not sure but
it seems that Subj is passed on to the functions but in replicates. Here is
what I came up with to eliminate the replication and to calculate activeSubj
for each panel in test(). Is this the correct way? How can  I pass on Subj
and Dose directly to test()? Thanks, Rene

test <-function(x) {
    activeSubj <- unique(Subj)[which.packet()]
    x          # returns y=x for testing only
}
      
xyplot(Conc ~ Time | Subj,
       groups=Dose,
       data = mydata,
       as.table=T,
       panel = function(x,y) {
           panel.xyplot(x,y)
           panel.curve(test, n=2)
           }
       )




Deepayan Sarkar wrote:
> 
> On 12/13/06, RMan54 <RMan54 at cox.net> wrote:
>>
>> I have a number of x, y observations (Time, Conc) for a number of
>> Subjects
>> (with subject number Subj) and Doses. I can plot the individual points
>> with
>> xyplot fine:
>>
>> xyplot(Conc ~ Time | Subj,
>>          Groups=Dose,
>>          data=myData,
>>          panel =  function(x,y) {
>>               panel.xyplot(x, y)
>>               panel.superpose(???) # Needs more here
>>          }
>> )
>>
>> I also like to plot on each panel (there is one Subj per panel) a
>> continuous
>> curve with predictions that I can calculate from a rather complicated
>> function:
>>
>> myPred <- (time, subj, dose) {
>>        returns predicted value of Conc for a given time, subj and dose
>> }
>>
>> The predicted curves are different for each panel.
>>
>> How do I plot the predictions? I have tried to add panel.superinpose in
>> the
>> xyplot portion but can't link to the myPred function. I also know about
>> panel.curve but couldn't make it work.
>>
>> My attempt is to calculate the predictions on the fly. Is this possible?
>> Or
>> do I need to calculate all predictions first and put the results in a
>> data
>> frame.
> 
> Depends on how much work you are willing to do. There is no reason for
> panel.curve to not work, provided you give it a "curve" to plot. This
> is normally done in the form of a vectorized function of one variable,
> which will be called with a vector of values spanning the x-axis of
> your plot. It is your responsibility to construct such a function
> inside each panel (presumably it would involve your myPred function).
> 
> The easy way, that generally works well for longitudinal data (with
> increasing x values within a panel), is to add a column of predicted
> values to your data frame. For most model fitting routines in R, the
> paradigm is:
> 
> fm <- some.model(y ~ whatever, data = mydata, ...)
> mydata$fit <- fitted(fm)
> 
> xyplot(y + fit ~ whatever,
>        type = list("p", "l"), distribute.type = TRUE)
> 
> A real example being:
> 
> library(lme4)
> data(Oxboys, package = "nlme")
> Oxboys$fit <- fitted(lmer(height ~ age + (1|Subject), data = Oxboys))
> xyplot(height + fit ~ age | Subject, Oxboys,
>        type = c("p", "l"), distribute.type = TRUE,
>        aspect = "xy")
> 
> 
> Things will be more complicated if you already have a grouping
> variable (the solution is to pass down the vector of fitted values to
> the panel function and use 'subscripts' to retrieve the ones that
> belong in the panel).
> 
> -Deepayan
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
> 
> 

-- 
View this message in context: http://www.nabble.com/xyplot%3A-discrete-points-%2B-continuous-curve-per-panel-tf2818931.html#a7886826
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list