[R] [Bug 14647] profile.mle can not get correct result

Jinsong Zhao jszhao at yeah.net
Fri Aug 5 10:05:31 CEST 2011


Thank you very much.

now, i call
mle(minuslogl=loglik, start=start, method <<- method, fixed=list())
in the mle.wrap() function, and the profile.mle() worked.

however, it created a variable named "method" in user workspace. if 
there had been a variable with same name, then the value of that 
variable would be destroyed.

Is there a way to avoid that happen? Thanks again.

Regards,
Jinsong

On 2011-8-5 14:56, r-bugs at r-project.org wrote:
> https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=14647
>
> Brian Ripley<ripley at stats.ox.ac.uk>  changed:
>
>             What    |Removed                     |Added
> ----------------------------------------------------------------------------
>               Status|NEW                         |CLOSED
>           Resolution|                            |INVALID
>
> --- Comment #1 from Brian Ripley<ripley at stats.ox.ac.uk>  2011-08-04 11:21:41 EDT ---
> This is not a bug in R, just in your understanding of scoping.
>
> Please review the R FAQ and only use R-bugs for things you 'know for
> certain' should work.
>
> On Thu, 4 Aug 2011, r-bugs at r-project.org wrote:
>
>> https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=14647
>>
>>            Summary: profile.mle can not get correct result
>>            Product: R
>>            Version: R 2.13.1
>>           Platform: ix86 (32-bit)
>>         OS/Version: Windows 32-bit
>>             Status: NEW
>>           Severity: enhancement
>>           Priority: P5
>>          Component: S4methods
>>         AssignedTo: R-core at R-project.org
>>         ReportedBy: jszhao at yeah.net
>>    Estimated Hours: 0.0
>>
>>
>> Hi there,
>>
>> I hope to wrap mle() in a function, just like the following:
>>
>> mle.wrap<- function(x, n, r, method = "BFGS") {
>>    loglik<- function(alpha, beta) {
>>       P<- pnorm(alpha + beta * x)
>>       -(sum(r * log(P)) + sum((n - r) * log(1-P)))
>>    }
>>    start<- list(alpha = 0, beta = 0)
>>    mle(minuslogl = loglik, start = start, method = method, fixed = list())
>> }
>>
>> Then I call this function:
>>
>> x<- c(100, 56, 32, 18, 10, 1)
>> r<- c(18, 17, 10, 6, 4, 3)
>> n<- c(18, 22, 17, 21, 23, 20)
>>
>> z<- mle.wrap(x, n, r)
>>
>>> profile(z,1)
>> An object of class "profile.mle"
>> Slot "profile":
>> $alpha
>>   z par.vals.alpha par.vals.beta
>> 1 0    -1.17522678    0.03674818
>>
>>
>> Slot "summary":
>> Maximum likelihood estimation
>>
>> Call:
>> mle(minuslogl = loglik, start = start, method = method, fixed = list())
>>
>> Coefficients:
>>          Estimate Std. Error
>> alpha -1.17522678 0.21572863
>> beta   0.03674818 0.00656062
>>
>> -2 log L: 111.1682
>>
>> The result of profile(z,1) was not correct. I tried to track the bug (or
>> feature?), and found that:
>>
>> pfit<- tryCatch(eval.parent(call, 2L), error = identity)
>>
>> give the following error message:
>>
>> <simpleError in match.arg(method): object 'method' not found>
>>
>> Therefore, I thought that
>> call$method<- fitted at method
>> should be add into the profile.mle at, e.g., after
>> call$minuslogl<- fitted at minuslogl
>>
>>
>> Regards,
>> Jinsong
>>
>> --
>> Configure bugmail: https://bugs.r-project.org/bugzilla3/userprefs.cgi?tab=email
>> ------- You are receiving this mail because: -------
>> You are the assignee for the bug.
>>
>> _______________________________________________
>> R-core list: https://stat.ethz.ch/mailman/listinfo/r-core
>>
>



More information about the R-help mailing list