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

            How to preserve electronics (computers, tablets and phones) for hundreds of years Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) The network's official Twitter account is up and running again. What content…How might modern humans leave a message for 50,000 years?How would an aquatic race develop computers?How do we make computers care for human life?Keeping supplies for 1000 yearsWhat will cell phones become in 100 years?What body armor protects against a laser?Could a society attain 1800s technology if limited to using copper and bronze?Electricity power (magic) and electronicsScavenging metal resources in post-apocalypse after 100 yearsWhy would precursors create devices that can survive and still work after hundreds of years?

            155 수학 과학 기타 둘러보기 메뉴eh추가해eh문서를 완성해

            Convert JSON to MapSimplest way to convert a string representing JSON array into Java array List of key value pairsHow to take String JSON values into HashMapConvert a JSON String to a HashMapCreating BSON object from JSON stringJSONObject - How to get a value ?Better Map ConstructorReading JSON from Url javaUpdate columns if input values are not null otherwise ignore and keep the existing values of column in databaseHow to store object represented as Json string into Couchbase Lite?Go JSON into MapHow do I efficiently iterate over each entry in a Java Map?Sort a Map<Key, Value> by valuesHow to round a number to n decimal places in JavaCan comments be used in JSON?How do I read / convert an InputStream into a String in Java?How can I pretty-print JSON in a shell script?What is the correct JSON content type?How can I deserialize JSON to a simple Dictionary<string,string> in ASP.NET?Why does Google prepend while(1); to their JSON responses?Parse JSON in JavaScript?