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