Re: [R] glm inside one self-defined function

2006-08-23 Thread Mike Wolfgang
After I updated my R from 2.2.0 to 2.3.1, it is working fine now. Thanks!
Mike

On 8/23/06, Prof Brian Ripley <[EMAIL PROTECTED]> wrote:
>
> Your example works for me without any error messages in R 2.3.1 with the
> current (uncredited) MASS package 7.2-27.1, including giving about 20 'ok
> here.'.
>
> Did you heed the advice in the posting guide to update (as well as to tell
> us the versions of things you were using)?  Probably not (as you sent HTML
> mail)!
>
> [One thing you are leaving out is
>
> > library(MASS)
>
> ]
>
>
> On Wed, 23 Aug 2006, Mike Wolfgang wrote:
>
> > Thanks Bill and Simon. I wrote a simpler function to test and found out
> it
> > was stepAIC which causes error, and I still don't know how to solve it.
> > Check out this simple function:
> >
> >
> > myfun<-function(k){
> >   xx<-mvrnorm(100,rep(0,10),diag(1,10),empirical=TRUE)
> >   colnames(xx)<-paste("x",1:10,sep='')
> >   py<-exp(sum(xx))/(1+exp(sum(xx)))
> >   for (i in 1:k){
> > y<-rbinom(100,1,py)
> > mydata<-data.frame(cbind(y,xx))
> > y.glm<-glm(y~.,binomial,mydata)
> > cat("ok here.\n")
> > y.step<-stepAIC(y.glm,direction='both',trace=0)
> > cat("ok here.\n")
> > print(summary(y.step))
> >   }
> > }
> >
> > myfun(10)
> >
> > only one "ok here" is printed.
> >
> > Mike
> >
> > On 8/22/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> > >
> > > Mike Wolfgang asks:
> > >
> > > >
> > > > From: [EMAIL PROTECTED]
> > > [mailto:[EMAIL PROTECTED] On Behalf Of Mike Wolfgang
> > > > Sent: Wednesday, 23 August 2006 1:31 PM
> > > > To: R-help list
> > > > Subject: [R] glm inside one self-defined function
> > > >
> > > > Hi list,
> > > >
> > > > I've searched in R-help and found some related discussions but still
> > > could
> > > > not understand this type of error. My own function is pretty
> complex,
> > > so I
> > > > would not put it here, but the basic algorithm is like this:
> > > > myfun<-function(k){
> > > >   mydata<-...#by someway I create a data frame
> > > >   mymodel<-glm(y~.,family=binomial(),data=mydata)
> > > >   ...#some other stuff
> > > > }
> > >
> > > I think you are leaving out something.  Here is a test of what you
> > > claim gives a problem (R 2.3.1, Windows):
> > >
> > > > myfun <- function(n) {
> > > +   z <- rnorm(n)
> > > +   mydata <- data.frame(x = z,
> > > + y = rbinom(n, size = 1, prob = exp(z)/(1+exp(z
> > > +   fm <- glm(y ~ x, binomial, mydata)
> > > +   fm
> > > + }
> > > >
> > > > myfun(100)
> > >
> > > Call:  glm(formula = y ~ x, family = binomial, data = mydata)
> > >
> > > Coefficients:
> > > (Intercept)x
> > >  0.1587   1.0223
> > >
> > > Degrees of Freedom: 99 Total (i.e. Null);  98 Residual
> > > Null Deviance:  137.6
> > > Residual Deviance: 118.3AIC: 122.3
> > >
> > > Not even a murmur of complaint.  (This also works in S-PLUS 7.0 but
> > > earlier versions of S-PLUS gave a problem rather like the one you
> note,
> > > curiously.)
> > >
> > > Look again at your code and see if the abstract version you give
> > > really matches what you did, may I suggest?
> > >
> > > >
> > > > as I execute this function, it gives error like this
> > > > Error in inherits(x, "data.frame") : object "mydata" not found
> > > >
> > > > So I guess glm here tries to find "mydata" in the parent
> environment.
> > > Why
> > > > doesn't it take "mydata" inside the function? How to let glm
> correctly
> > > > locate it? Is this (scope/environment) mentioned in R manual?
> Thanks,
> > > >
> > > > Mike
> > >
> >
> >   [[alternative HTML version deleted]]
> >
> > __
> > R-help@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.
> >
>
> --
> Brian D. Ripley,  [EMAIL PROTECTED]
> Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
> University of Oxford, Tel:  +44 1865 272861 (self)
> 1 South Parks Road, +44 1865 272866 (PA)
> Oxford OX1 3TG, UKFax:  +44 1865 272595
>

[[alternative HTML version deleted]]

__
R-help@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.


Re: [R] glm inside one self-defined function

2006-08-23 Thread Prof Brian Ripley
Your example works for me without any error messages in R 2.3.1 with the 
current (uncredited) MASS package 7.2-27.1, including giving about 20 'ok 
here.'.

Did you heed the advice in the posting guide to update (as well as to tell 
us the versions of things you were using)?  Probably not (as you sent HTML 
mail)!

[One thing you are leaving out is

> library(MASS)

]


On Wed, 23 Aug 2006, Mike Wolfgang wrote:

> Thanks Bill and Simon. I wrote a simpler function to test and found out it
> was stepAIC which causes error, and I still don't know how to solve it.
> Check out this simple function:
> 
> 
> myfun<-function(k){
>   xx<-mvrnorm(100,rep(0,10),diag(1,10),empirical=TRUE)
>   colnames(xx)<-paste("x",1:10,sep='')
>   py<-exp(sum(xx))/(1+exp(sum(xx)))
>   for (i in 1:k){
> y<-rbinom(100,1,py)
> mydata<-data.frame(cbind(y,xx))
> y.glm<-glm(y~.,binomial,mydata)
> cat("ok here.\n")
> y.step<-stepAIC(y.glm,direction='both',trace=0)
> cat("ok here.\n")
> print(summary(y.step))
>   }
> }
> 
> myfun(10)
> 
> only one "ok here" is printed.
> 
> Mike
> 
> On 8/22/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> >
> > Mike Wolfgang asks:
> >
> > >
> > > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED] On Behalf Of Mike Wolfgang
> > > Sent: Wednesday, 23 August 2006 1:31 PM
> > > To: R-help list
> > > Subject: [R] glm inside one self-defined function
> > >
> > > Hi list,
> > >
> > > I've searched in R-help and found some related discussions but still
> > could
> > > not understand this type of error. My own function is pretty complex,
> > so I
> > > would not put it here, but the basic algorithm is like this:
> > > myfun<-function(k){
> > >   mydata<-...#by someway I create a data frame
> > >   mymodel<-glm(y~.,family=binomial(),data=mydata)
> > >   ...#some other stuff
> > > }
> >
> > I think you are leaving out something.  Here is a test of what you
> > claim gives a problem (R 2.3.1, Windows):
> >
> > > myfun <- function(n) {
> > +   z <- rnorm(n)
> > +   mydata <- data.frame(x = z,
> > + y = rbinom(n, size = 1, prob = exp(z)/(1+exp(z
> > +   fm <- glm(y ~ x, binomial, mydata)
> > +   fm
> > + }
> > >
> > > myfun(100)
> >
> > Call:  glm(formula = y ~ x, family = binomial, data = mydata)
> >
> > Coefficients:
> > (Intercept)x
> >  0.1587   1.0223
> >
> > Degrees of Freedom: 99 Total (i.e. Null);  98 Residual
> > Null Deviance:  137.6
> > Residual Deviance: 118.3AIC: 122.3
> >
> > Not even a murmur of complaint.  (This also works in S-PLUS 7.0 but
> > earlier versions of S-PLUS gave a problem rather like the one you note,
> > curiously.)
> >
> > Look again at your code and see if the abstract version you give
> > really matches what you did, may I suggest?
> >
> > >
> > > as I execute this function, it gives error like this
> > > Error in inherits(x, "data.frame") : object "mydata" not found
> > >
> > > So I guess glm here tries to find "mydata" in the parent environment.
> > Why
> > > doesn't it take "mydata" inside the function? How to let glm correctly
> > > locate it? Is this (scope/environment) mentioned in R manual? Thanks,
> > >
> > > Mike
> >
> 
>   [[alternative HTML version deleted]]
> 
> __
> R-help@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.
> 

-- 
Brian D. Ripley,  [EMAIL PROTECTED]
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel:  +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UKFax:  +44 1865 272595

__
R-help@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.


Re: [R] glm inside one self-defined function

2006-08-23 Thread Mike Wolfgang
Thanks Bill and Simon. I wrote a simpler function to test and found out it
was stepAIC which causes error, and I still don't know how to solve it.
Check out this simple function:


myfun<-function(k){
  xx<-mvrnorm(100,rep(0,10),diag(1,10),empirical=TRUE)
  colnames(xx)<-paste("x",1:10,sep='')
  py<-exp(sum(xx))/(1+exp(sum(xx)))
  for (i in 1:k){
y<-rbinom(100,1,py)
mydata<-data.frame(cbind(y,xx))
y.glm<-glm(y~.,binomial,mydata)
cat("ok here.\n")
y.step<-stepAIC(y.glm,direction='both',trace=0)
cat("ok here.\n")
print(summary(y.step))
  }
}

myfun(10)

only one "ok here" is printed.

Mike

On 8/22/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
>
> Mike Wolfgang asks:
>
> >
> > From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Mike Wolfgang
> > Sent: Wednesday, 23 August 2006 1:31 PM
> > To: R-help list
> > Subject: [R] glm inside one self-defined function
> >
> > Hi list,
> >
> > I've searched in R-help and found some related discussions but still
> could
> > not understand this type of error. My own function is pretty complex,
> so I
> > would not put it here, but the basic algorithm is like this:
> > myfun<-function(k){
> >   mydata<-...#by someway I create a data frame
> >   mymodel<-glm(y~.,family=binomial(),data=mydata)
> >   ...#some other stuff
> > }
>
> I think you are leaving out something.  Here is a test of what you
> claim gives a problem (R 2.3.1, Windows):
>
> > myfun <- function(n) {
> +   z <- rnorm(n)
> +   mydata <- data.frame(x = z,
> + y = rbinom(n, size = 1, prob = exp(z)/(1+exp(z
> +   fm <- glm(y ~ x, binomial, mydata)
> +   fm
> + }
> >
> > myfun(100)
>
> Call:  glm(formula = y ~ x, family = binomial, data = mydata)
>
> Coefficients:
> (Intercept)x
>  0.1587   1.0223
>
> Degrees of Freedom: 99 Total (i.e. Null);  98 Residual
> Null Deviance:  137.6
> Residual Deviance: 118.3AIC: 122.3
>
> Not even a murmur of complaint.  (This also works in S-PLUS 7.0 but
> earlier versions of S-PLUS gave a problem rather like the one you note,
> curiously.)
>
> Look again at your code and see if the abstract version you give
> really matches what you did, may I suggest?
>
> >
> > as I execute this function, it gives error like this
> > Error in inherits(x, "data.frame") : object "mydata" not found
> >
> > So I guess glm here tries to find "mydata" in the parent environment.
> Why
> > doesn't it take "mydata" inside the function? How to let glm correctly
> > locate it? Is this (scope/environment) mentioned in R manual? Thanks,
> >
> > Mike
>

[[alternative HTML version deleted]]

__
R-help@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.


Re: [R] glm inside one self-defined function

2006-08-22 Thread Bill.Venables
Mike Wolfgang asks:

>
> From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Mike Wolfgang
> Sent: Wednesday, 23 August 2006 1:31 PM
> To: R-help list
> Subject: [R] glm inside one self-defined function
> 
> Hi list,
> 
> I've searched in R-help and found some related discussions but still
could
> not understand this type of error. My own function is pretty complex,
so I
> would not put it here, but the basic algorithm is like this:
> myfun<-function(k){
>   mydata<-...#by someway I create a data frame
>   mymodel<-glm(y~.,family=binomial(),data=mydata)
>   ...#some other stuff
> }

I think you are leaving out something.  Here is a test of what you
claim gives a problem (R 2.3.1, Windows):

> myfun <- function(n) {
+   z <- rnorm(n)
+   mydata <- data.frame(x = z, 
+ y = rbinom(n, size = 1, prob = exp(z)/(1+exp(z
+   fm <- glm(y ~ x, binomial, mydata)
+   fm
+ }
> 
> myfun(100)

Call:  glm(formula = y ~ x, family = binomial, data = mydata) 

Coefficients:
(Intercept)x  
 0.1587   1.0223  

Degrees of Freedom: 99 Total (i.e. Null);  98 Residual
Null Deviance:  137.6 
Residual Deviance: 118.3AIC: 122.3 

Not even a murmur of complaint.  (This also works in S-PLUS 7.0 but
earlier versions of S-PLUS gave a problem rather like the one you note,
curiously.)

Look again at your code and see if the abstract version you give
really matches what you did, may I suggest?

> 
> as I execute this function, it gives error like this
> Error in inherits(x, "data.frame") : object "mydata" not found
> 
> So I guess glm here tries to find "mydata" in the parent environment.
Why
> doesn't it take "mydata" inside the function? How to let glm correctly
> locate it? Is this (scope/environment) mentioned in R manual? Thanks,
> 
> Mike

__
R-help@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.


[R] glm inside one self-defined function

2006-08-22 Thread Mike Wolfgang
Hi list,

I've searched in R-help and found some related discussions but still could
not understand this type of error. My own function is pretty complex, so I
would not put it here, but the basic algorithm is like this:
myfun<-function(k){
  mydata<-...#by someway I create a data frame
  mymodel<-glm(y~.,family=binomial(),data=mydata)
  ...#some other stuff
}


as I execute this function, it gives error like this
Error in inherits(x, "data.frame") : object "mydata" not found

So I guess glm here tries to find "mydata" in the parent environment. Why
doesn't it take "mydata" inside the function? How to let glm correctly
locate it? Is this (scope/environment) mentioned in R manual? Thanks,

Mike

[[alternative HTML version deleted]]

__
R-help@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.