nls() : “Error in nlsModel(formula, mf, start, wts) : singular gradient matrix at initial parameter estimates ”Modifying a curve to prevent singular gradient matrix at initial parameter estimatesHow to fix 'singular gradient matrix at initial parameter estimates' errorError: singular gradient matrix at initial parameter estimateswrapnls: Error: singular gradient matrix at initial parameter estimatesnls singular gradient matrix - fit parameters in integral's upper limitsFit 'nls': singular gradient matrix at initial parameter estimatesR and NLS: singular gradient matrix at initial parameterHow to solve singular gradient matrix error?Using R to fit: y ~ exp(-(x-x0)^a)R: nls() error. “singular gradient matrix at initial parameter estimates”

Expand and Contract

How do I deal with an unproductive colleague in a small company?

Why didn't Boeing produce its own regional jet?

Bullying boss launched a smear campaign and made me unemployable

Why doesn't using multiple commands with a || or && conditional work?

ssTTsSTtRrriinInnnnNNNIiinngg

Assassin's bullet with mercury

Cursor Replacement for Newbies

What's the in-universe reasoning behind sorcerers needing material components?

What exploit Are these user agents trying to use?

Avoiding direct proof while writing proof by induction

Is "remove commented out code" correct English?

Would Slavery Reparations be considered Bills of Attainder and hence Illegal?

Could the museum Saturn V's be refitted for one more flight?

CAST throwing error when run in stored procedure but not when run as raw query

Avoiding the "not like other girls" trope?

Is there a hemisphere-neutral way of specifying a season?

How can I determine if the org that I'm currently connected to is a scratch org?

Is it possible to create a QR code using text?

Watching something be piped to a file live with tail

What killed these X2 caps?

How badly should I try to prevent a user from XSSing themselves?

Why would the Red Woman birth a shadow if she worshipped the Lord of the Light?

Why do bosons tend to occupy the same state?



nls() : “Error in nlsModel(formula, mf, start, wts) : singular gradient matrix at initial parameter estimates ”


Modifying a curve to prevent singular gradient matrix at initial parameter estimatesHow to fix 'singular gradient matrix at initial parameter estimates' errorError: singular gradient matrix at initial parameter estimateswrapnls: Error: singular gradient matrix at initial parameter estimatesnls singular gradient matrix - fit parameters in integral's upper limitsFit 'nls': singular gradient matrix at initial parameter estimatesR and NLS: singular gradient matrix at initial parameterHow to solve singular gradient matrix error?Using R to fit: y ~ exp(-(x-x0)^a)R: nls() error. “singular gradient matrix at initial parameter estimates”













0















I'm trying to use nls(), but I keep getting the error




Error in nlsModel(formula, mf, start, wts) : singular gradient matrix at initial parameter estimates




and I'm not sure where the problem is.



Code below:



TI <- c(0.5, 2, 5, 10, 30)
prices <- cbind(zi, TI)
prices = as.data.frame(prices)

lnz_i <- function(TI, Alpha, Beta, Sigma) -TI*(Alpha*(1 - exp(-Beta*TI)) / (Beta) - (Sigma^2/2)*(1 - exp(-Beta*TI)) / (Beta)^2) - 0.02*(1 - exp(-Beta*TI)) / (Beta)

nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Alpha = 0.02, Beta = 0.3, Sigma = 0.06), data = prices)


Any help is greatly appreciated.










share|improve this question






















  • zi is missing.

    – G. Grothendieck
    Mar 22 at 2:21















0















I'm trying to use nls(), but I keep getting the error




Error in nlsModel(formula, mf, start, wts) : singular gradient matrix at initial parameter estimates




and I'm not sure where the problem is.



Code below:



TI <- c(0.5, 2, 5, 10, 30)
prices <- cbind(zi, TI)
prices = as.data.frame(prices)

lnz_i <- function(TI, Alpha, Beta, Sigma) -TI*(Alpha*(1 - exp(-Beta*TI)) / (Beta) - (Sigma^2/2)*(1 - exp(-Beta*TI)) / (Beta)^2) - 0.02*(1 - exp(-Beta*TI)) / (Beta)

nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Alpha = 0.02, Beta = 0.3, Sigma = 0.06), data = prices)


Any help is greatly appreciated.










share|improve this question






















  • zi is missing.

    – G. Grothendieck
    Mar 22 at 2:21













0












0








0








I'm trying to use nls(), but I keep getting the error




Error in nlsModel(formula, mf, start, wts) : singular gradient matrix at initial parameter estimates




and I'm not sure where the problem is.



Code below:



TI <- c(0.5, 2, 5, 10, 30)
prices <- cbind(zi, TI)
prices = as.data.frame(prices)

lnz_i <- function(TI, Alpha, Beta, Sigma) -TI*(Alpha*(1 - exp(-Beta*TI)) / (Beta) - (Sigma^2/2)*(1 - exp(-Beta*TI)) / (Beta)^2) - 0.02*(1 - exp(-Beta*TI)) / (Beta)

nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Alpha = 0.02, Beta = 0.3, Sigma = 0.06), data = prices)


Any help is greatly appreciated.










share|improve this question














I'm trying to use nls(), but I keep getting the error




Error in nlsModel(formula, mf, start, wts) : singular gradient matrix at initial parameter estimates




and I'm not sure where the problem is.



Code below:



TI <- c(0.5, 2, 5, 10, 30)
prices <- cbind(zi, TI)
prices = as.data.frame(prices)

lnz_i <- function(TI, Alpha, Beta, Sigma) -TI*(Alpha*(1 - exp(-Beta*TI)) / (Beta) - (Sigma^2/2)*(1 - exp(-Beta*TI)) / (Beta)^2) - 0.02*(1 - exp(-Beta*TI)) / (Beta)

nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Alpha = 0.02, Beta = 0.3, Sigma = 0.06), data = prices)


Any help is greatly appreciated.







r optimization nls






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Mar 21 at 21:10









Chris AguilarChris Aguilar

84




84












  • zi is missing.

    – G. Grothendieck
    Mar 22 at 2:21

















  • zi is missing.

    – G. Grothendieck
    Mar 22 at 2:21
















zi is missing.

– G. Grothendieck
Mar 22 at 2:21





zi is missing.

– G. Grothendieck
Mar 22 at 2:21












1 Answer
1






active

oldest

votes


















0














You have inter-correlation between the coefficients Alpha and Sigma. A simple solution is to hold one of them constant. Maybe it would be better to reformulate the equation and substitute Alpha or Sigma.



set.seed(1)
lnz_i <- function(TI, Alpha, Beta, Sigma) -TI*(Alpha*(1 - exp(-Beta*TI)) / (Beta) - (Sigma^2/2)*(1 - exp(-Beta*TI)) / (Beta)^2) - 0.02*(1 - exp(-Beta*TI)) / (Beta)
TI <- c(0.5, 2, 5, 10, 30)
prices <- data.frame(TI, zi=lnz_i(TI, 0.02, 0.3, 0.06)*runif(length(TI), .9, 1.1))

#Hold Alpha Fixed
Alpha <- 0.02
nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Beta=0.3, Sigma = 0.06), data = prices)
Alpha <- 0.04
nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Beta=0.3, Sigma = 0.06), data = prices)
Alpha <- 0.1
nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Beta=0.3, Sigma = 0.2), data = prices)
#Estimate for Beta is all the time 0.401 and residuals are at 0.003768,
#only Sigma is changing when Alpha is changed

#Hold Sigma Fixed
Sigma <- 0.06
nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Alpha = 0.02, Beta = 0.3), data = prices)
Sigma <- 0.03
nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Alpha = 0.02, Beta = 0.3), data = prices)





share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55289307%2fnls-error-in-nlsmodelformula-mf-start-wts-singular-gradient-matrix-a%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    You have inter-correlation between the coefficients Alpha and Sigma. A simple solution is to hold one of them constant. Maybe it would be better to reformulate the equation and substitute Alpha or Sigma.



    set.seed(1)
    lnz_i <- function(TI, Alpha, Beta, Sigma) -TI*(Alpha*(1 - exp(-Beta*TI)) / (Beta) - (Sigma^2/2)*(1 - exp(-Beta*TI)) / (Beta)^2) - 0.02*(1 - exp(-Beta*TI)) / (Beta)
    TI <- c(0.5, 2, 5, 10, 30)
    prices <- data.frame(TI, zi=lnz_i(TI, 0.02, 0.3, 0.06)*runif(length(TI), .9, 1.1))

    #Hold Alpha Fixed
    Alpha <- 0.02
    nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Beta=0.3, Sigma = 0.06), data = prices)
    Alpha <- 0.04
    nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Beta=0.3, Sigma = 0.06), data = prices)
    Alpha <- 0.1
    nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Beta=0.3, Sigma = 0.2), data = prices)
    #Estimate for Beta is all the time 0.401 and residuals are at 0.003768,
    #only Sigma is changing when Alpha is changed

    #Hold Sigma Fixed
    Sigma <- 0.06
    nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Alpha = 0.02, Beta = 0.3), data = prices)
    Sigma <- 0.03
    nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Alpha = 0.02, Beta = 0.3), data = prices)





    share|improve this answer



























      0














      You have inter-correlation between the coefficients Alpha and Sigma. A simple solution is to hold one of them constant. Maybe it would be better to reformulate the equation and substitute Alpha or Sigma.



      set.seed(1)
      lnz_i <- function(TI, Alpha, Beta, Sigma) -TI*(Alpha*(1 - exp(-Beta*TI)) / (Beta) - (Sigma^2/2)*(1 - exp(-Beta*TI)) / (Beta)^2) - 0.02*(1 - exp(-Beta*TI)) / (Beta)
      TI <- c(0.5, 2, 5, 10, 30)
      prices <- data.frame(TI, zi=lnz_i(TI, 0.02, 0.3, 0.06)*runif(length(TI), .9, 1.1))

      #Hold Alpha Fixed
      Alpha <- 0.02
      nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Beta=0.3, Sigma = 0.06), data = prices)
      Alpha <- 0.04
      nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Beta=0.3, Sigma = 0.06), data = prices)
      Alpha <- 0.1
      nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Beta=0.3, Sigma = 0.2), data = prices)
      #Estimate for Beta is all the time 0.401 and residuals are at 0.003768,
      #only Sigma is changing when Alpha is changed

      #Hold Sigma Fixed
      Sigma <- 0.06
      nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Alpha = 0.02, Beta = 0.3), data = prices)
      Sigma <- 0.03
      nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Alpha = 0.02, Beta = 0.3), data = prices)





      share|improve this answer

























        0












        0








        0







        You have inter-correlation between the coefficients Alpha and Sigma. A simple solution is to hold one of them constant. Maybe it would be better to reformulate the equation and substitute Alpha or Sigma.



        set.seed(1)
        lnz_i <- function(TI, Alpha, Beta, Sigma) -TI*(Alpha*(1 - exp(-Beta*TI)) / (Beta) - (Sigma^2/2)*(1 - exp(-Beta*TI)) / (Beta)^2) - 0.02*(1 - exp(-Beta*TI)) / (Beta)
        TI <- c(0.5, 2, 5, 10, 30)
        prices <- data.frame(TI, zi=lnz_i(TI, 0.02, 0.3, 0.06)*runif(length(TI), .9, 1.1))

        #Hold Alpha Fixed
        Alpha <- 0.02
        nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Beta=0.3, Sigma = 0.06), data = prices)
        Alpha <- 0.04
        nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Beta=0.3, Sigma = 0.06), data = prices)
        Alpha <- 0.1
        nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Beta=0.3, Sigma = 0.2), data = prices)
        #Estimate for Beta is all the time 0.401 and residuals are at 0.003768,
        #only Sigma is changing when Alpha is changed

        #Hold Sigma Fixed
        Sigma <- 0.06
        nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Alpha = 0.02, Beta = 0.3), data = prices)
        Sigma <- 0.03
        nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Alpha = 0.02, Beta = 0.3), data = prices)





        share|improve this answer













        You have inter-correlation between the coefficients Alpha and Sigma. A simple solution is to hold one of them constant. Maybe it would be better to reformulate the equation and substitute Alpha or Sigma.



        set.seed(1)
        lnz_i <- function(TI, Alpha, Beta, Sigma) -TI*(Alpha*(1 - exp(-Beta*TI)) / (Beta) - (Sigma^2/2)*(1 - exp(-Beta*TI)) / (Beta)^2) - 0.02*(1 - exp(-Beta*TI)) / (Beta)
        TI <- c(0.5, 2, 5, 10, 30)
        prices <- data.frame(TI, zi=lnz_i(TI, 0.02, 0.3, 0.06)*runif(length(TI), .9, 1.1))

        #Hold Alpha Fixed
        Alpha <- 0.02
        nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Beta=0.3, Sigma = 0.06), data = prices)
        Alpha <- 0.04
        nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Beta=0.3, Sigma = 0.06), data = prices)
        Alpha <- 0.1
        nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Beta=0.3, Sigma = 0.2), data = prices)
        #Estimate for Beta is all the time 0.401 and residuals are at 0.003768,
        #only Sigma is changing when Alpha is changed

        #Hold Sigma Fixed
        Sigma <- 0.06
        nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Alpha = 0.02, Beta = 0.3), data = prices)
        Sigma <- 0.03
        nls(zi ~ lnz_i(TI, Alpha, Beta, Sigma), start = c(Alpha = 0.02, Beta = 0.3), data = prices)






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Mar 26 at 8:52









        user10488504user10488504

        1114




        1114





























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55289307%2fnls-error-in-nlsmodelformula-mf-start-wts-singular-gradient-matrix-a%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

            Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

            Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript