[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