Hi David, ilai

The root cause of the problem is the passing of arguments to panel functions to me and my colleagues. Just going through the archives there seems to be different ways for very similar/same outcomes and
trying to get a pattern is hard to discern.
I frequently have to use the subscripts or group.number to access other data.
I thought I had things sorted out in my head with the panel.groups and group.number but this has shattered it.

Thanks

Duncan

At 12:15 21/04/2012, you wrote:

On Apr 20, 2012, at 9:14 PM, ilai wrote:

Oops - that is "reply all"
On Fri, Apr 20, 2012 at 5:29 PM, David Winsemius <dwinsem...@comcast.net > wrote:

I'm a bit puzzled by this exchange. I know there is a
'panel.locfit', but
you two are spelling it differently. Can you explain why you are
doing so?

Hi David,
Thanks for stepping in. panel.Locfit is the OP's local function (or
just a wrapper ?) which I believe is here
http://www.mail-archive.com/r-help@r-project.org/msg167164.html

Note the two errors OP encountered (solved down the thread) were
caused by the way he called the function in xyplot, not by
panel.Locfit itself, which I did not modify. I guess now the issue is
how to generalize panel.Locfit somehow, but I am not sure how. I
suspect the problem is not my understanding but that there really
isn't any one specific problem here for the list to solve, though,
again, I am known for misinterpreting OP requests... :)

?panel.locfit

As I said, I am unfamiliar with the package - but this doesn't
surprise me. Thank you for pointing it out, wish you've noticed the
exchange sooner...

Another puzzle. In the original posting there was this segment:
---
but gives an error message without par.settings if i want to add
                       panel.Locfit(x,y,nn= 0.9,lwd = c(1,2,3), ...)

Error using packet 1
formal argument "Iwd" matched by multiple actual arguments
---

On my mailer that formal argument starts with a capital "I" but the
code seemed to be attempting a lowercase "l".

I could never see reason offered for defining a new panel.locfit, but
I'm wondering if the sometimes similar representation of those two
different letters could be causing an obscure conflict?

--
David.

Cheers


?panel.Locfit
No documentation for 'panel.Locfit' in specified packages and
libraries:
you could try '??panel.Locfit'

?panel.locfit

{locfit}        R Documentation
Locfit panel function

Description

This panel function can be used to add locfit fits to plots
generated by
trellis.



I am trying to construct a function/s to cover as many of the normal
situations as possible.
Usually I have to amend colours lines etc to distinguish the data.

I want to cover a number of situations
1 Conditioned by panel no groups
2 Conditioned by panel and groups.
3 Multiple values for above - to show colleagues (EDA)
4 Conditioned by panel and groups + an overall fit for all the
data within
a panel
5 Several y values in a panel eg Y1+Y2 and outer = FALSE with a
fit for
each of Y1 and Y2

I am trying to cover as many of the above situations in 1 function
before
resulting to trellis.focus or
overlaying. The graphs that I normally create are not simple,
generally
involving useOuterStrips
which may have different y scales for panel rows (combindeLimits/ manual)
and different panel row heights.

locfit is like loess but 2 arguments for smoothing; the degree of
smoothing produced by the defaults
is approximately that of loess but I normally need less smoothing
(the
same would be apply for loess).

Most of the questions to Rhelp are for 1 with just a small number
for 5
and they are not applicable here
and understanding the requirements for passing arguments in these
different situations I find difficult.
I would like to reduce the number of panel functions to the
minimum to
cover the general situaltions because
my graphs are usually not normal and then add to them for a
particular
situation.

Regards

Duncan


At 01:38 21/04/2012, you wrote:

Duncan,
First off, I admit it is not clear to me what you are trying to
achieve and more importantly, why? by "why" I mean 1) I don't see
the
advantage of writing one general panel function for completely
different situations (one/multiple smoothers, grouping levels
etc.) 2)
your intended result as I understand it seems rather cluttered,
google
<chartjunk>. 3) I am unfamiliar with locfit package, but are we
reinventing the wheel here ? i.e. will modifying settings in
xyplot(y
~x, xx, groups = Farm, type=c('p','smooth')) achieve the same ?

With your initial reproducible example (thank you) it was easy to
eliminate the errors, but clearly the resulting plots are not
what you
intended (continue inline):

On Thu, Apr 19, 2012 at 4:23 PM, Duncan Mackay <mac...@northnet.com.au >
wrote:
<snip>
3. What I want to be able to add in the above is extra lines with
different
values of nn.
  I think I will have to modify panel.Locfit so that it goes
through
different values of nn in each of the panels and groups if I want
different
colours for extra lines with different nn values

Yes you could. There are several options:
add group.number to the arguments of panel.locfit and use it to
make
nn a vector, along the lines of
  panel.foo <- function(x,y,group.number,theta,...){
    smpar <- theta[group.number]
    panel.loess(x,y,smpar,...)
    panel.xyplot(x,y,...)
  }

xyplot (y ~ x ,xx ,group =Farm,theta=c(4,1,.4),panel=panel.superpose,panel.groups=panel.foo)

# or
xyplot(y~x|Farm,xx,group=Padd,theta=c(.6,1),
  panel=panel.superpose,panel.groups=panel.foo)

Here you will need to modify the Farm group to 6 levels - 3*two
smoothers.

You could make nn a list and loop over it inside the panel
function.
Looks like you tried something like that with specifying 2
panel.Locfit, one suggestion to your code:

                   panel.Locfit(x,y,...) # default 0.7
                      panel.Locfit(x,y,nn=0.9)   # i.e. remove the
... to avoid clashes

Finally, use ?trellis.focus to plot the second smoother "post-hoc".
also the latticeExtra package has many useful tools to create
layers
of the same (or different) plot with different settings.

4 Produce an extra line for a fit for all the groups in 1/2+
panels.
  As for 3 but I do not know how to group all the x and y's  for
each
of the
panes using panel.groups

Why does it matter ? seems you have failed to learn the lesson from
the first post - the same functionality applies to 1 as to multiple
panels. Does each panel have a different grouping structure ? use
packet.number() for panels similar to group.number idea.

I need to do this and then scale up for a panel function to
include
confidence bands

than expand the xlim,ylim or scales in ?xyplot


For the record making Farm and Padd factors. With 1 panel and
groups =
Farm
works with the extra line the same colour for its group
a similar situation for the three panels when conditioned by
Farm and
groups
= Pad

????

Like I said I am a little lost on this problem but I hope this
helps
giving some direction.
Cheers



 xyplot(y ~x, xx,
        groups = Farm,

        par.settings = list(strip.background = list(col =
"transparent"),
                            superpose.line   = list(col =
c("black","grey"),
                                                            lwd =
c(1,2,3),
                                                            lty =
c(2,1,3)),
                            superpose.symbol = list(cex = c(0.8,
0.7,0.7),
                                                    col =
c("red","black","blue"),
                                                    pch =
c(20,4,16))
                  ),
        auto.key=list(lines=T,points = T,rectangles=F),

        panel  = panel.superpose,
        panel.groups=function(x,y, ...){

                       panel.xyplot(x,y,...)
                       panel.Locfit(x,y,...) # default 0.7
                       panel.Locfit(x,y,nn=0.9,...)

                     }
 ) ## xyplot


Regards

Duncan


At 02:12 20/04/2012, you wrote:

On Thu, Apr 19, 2012 at 2:30 AM, Duncan Mackay
<mac...@northnet.com.au>
wrote:
Hi

 xyplot(y ~x|Farm,xx,
        groups = Padd,
        panel = panel.superpose,
        panel.groups=function(x,y, ...){
                       panel.Locfit(x,y,...)
                       panel.xyplot(x,y,...)
                     }
 ) ## xyplot

The above works nicely and also without par.setting giving
lattice
defaults.
The par.setting is handy for a lot of graphs that I do.

But when I tried a 1 panel plot I get the error message.

 xyplot(y ~x,xx,
        groups = Farm,
        auto.key=TRUE,
        panel = function(x,y, ...){

                       panel.Locfit(x,y,...)
                       panel.xyplot(x,y,...)
                     }
        )

These two plots are NOT THE SAME. Did you want the same as the
first
but with groups being Farm and Padd ignored ? in that case you
(again)
need a panel.groups:

 xyplot(y ~x,xx,
      groups = Farm,
      auto.key=TRUE,
      panel = panel.superpose,panel.groups=function(x,y,...){
                     panel.Locfit(x,y,...)
                     panel.xyplot(x,y,...)
                   }
      )


If I want to plot another curve with different smoothing
but gives an error message without par.settings if i want to add
                       panel.Locfit(x,y,nn= 0.9,lwd =
c(1,2,3), ...)

Error using packet 1
formal argument "Iwd" matched by multiple actual arguments

It is all in the way you initially specified how to pass the
arguments
for panel.Locfit. This works without error:

 xyplot(y ~x,xx,
      groups = Farm,
      auto.key=TRUE,lwd=1:3,
      panel = panel.superpose,panel.groups=function(x,y,nn,...){
                     panel.Locfit(x,y,nn=.9,...)
                     panel.xyplot(x,y,...)
                   }
      )


HTH



I also need to plot a smoothed line for all groups trying
groups,
subscripts
and panel.groups as arguments without success

Any solutions to solve the above will be gratefully received and
faithfully
applied.

Duncan

sessionInfo()
R version 2.15.0 (2012-03-30)
Platform: i386-pc-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=English_Australia.1252
 LC_CTYPE=English_Australia.1252
LC_MONETARY=English_Australia.1252 LC_NUMERIC=C
LC_TIME=English_Australia.1252

attached base packages:
[1] datasets  utils     stats     graphics  grDevices grid
 methods
base

other attached packages:
[1] locfit_1.5-7        R.oo_1.9.3          R.methodsS3_1.2.2
foreign_0.8-49
     chron_2.3-42        MASS_7.3-17 latticeExtra_0.6-19
RColorBrewer_1.0-5
[9] lattice_0.20-6

loaded via a namespace (and not attached):
[1] tools_2.15.0





David Winsemius, MD
West Hartford, CT


______________________________________________
R-help@r-project.org 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.

David Winsemius, MD
West Hartford, CT


______________________________________________
R-help@r-project.org 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.

Reply via email to