Tato otázka již má odpovědi zde :

Komentáře

  • r zjevně není normální. Jeho distribuce je zkosená doprava (spousta malých hodnot blízkých 0, několik velkých hodnot). Uvidíte to zadáním " hist (r) ".
  • Tip! Pomocí dput(r) vygenerujte řetězec, který lze snadno kopírovat ' n ' pastable. Nyní musíme údaje do r zadat ručně …
  • @RasmusB å å děkuji, já hledal ten příkaz 🙂 Upravil jsem otázku.

t nevytvoříte sekvenci datových hodnot, abyste viděli rozdělení. Představuje $ r $ již frekvenci nebo hustotu pravděpodobnosti datových hodnot?

  • Na tuto otázku jsem odpověděl několikrát v několika kontextech. R řešení pro diskrétní proměnnou, jako je vaše Index, se objeví na stats.stackexchange. com / a / 43004/919 ; R řešení pro spojitou proměnnou je na stats.stackexchange.com/questions/70153/… ; a řešení Excel je na stats.stackexchange.com/a/11563/919 .
  • odpověď

    Existuje rozdíl mezi přizpůsobením gaussovské distribuce a přizpůsobením gaussovské křivky hustoty . Co dělá to první. To, co chcete, je (myslím) druhé.

    Přizpůsobení distribuce je zhruba řečeno to, co byste dělali, kdybyste vytvořili histogram vašich dat a zkoušel zjistit, jaký tvar to mělo. Místo toho prostě děláte vykreslování křivky. Tato křivka má uprostřed hrb, jako to, co získáte vykreslením funkce gaussovské hustoty.

    Chcete-li získat, co chcete, musíte může použít něco jako optim k přizpůsobení křivky vašim datům. Následující kód použije nelineární nejmenší čtverce k vyhledání tří parametrů poskytujících nejvhodnější gaussovu křivku: je gaussovský průměr, s je standardní odchylka a k je libovolný parametr měřítka (protože Gaussova hustota je omezena na integraci na 1, zatímco vaše data nejsou „t).

    x <- seq_along(r) f <- function(par) { m <- par[1] sd <- par[2] k <- par[3] rhat <- k * exp(-0.5 * ((x - m)/sd)^2) sum((r - rhat)^2) } optim(c(15, 2, 1), f, method="BFGS", control=list(reltol=1e-9)) 

    Komentáře

    • Zahrál jsem si s tímto řešením, ale porazili jste mě 🙂 Když jsem si zahrál, všiml jsem si, že počáteční počáteční hodnoty dané optim záležely hodně , takže při použití této metody nezapomeňte graficky zkontrolovat uložení.

    An swer

    Navrhuji pro tuto analýzu použít nelineární nejmenší čtverce .

    # First present the data in a data-frame tab <- data.frame(x=seq_along(r), r=r) #Apply function nls (res <- nls( r ~ k*exp(-1/2*(x-mu)^2/sigma^2), start=c(mu=15,sigma=5,k=1) , data = tab)) 

    A z výstupu se mi podařilo získat následující přizpůsobenou „Gaussovu křivku“:

    v <- summary(res)$parameters[,"Estimate"] plot(r~x, data=tab) plot(function(x) v[3]*exp(-1/2*(x-v[1])^2/v[2]^2),col=2,add=T,xlim=range(tab$x) ) 

    zde zadejte popis obrázku

    Přizpůsobení není úžasné … Nebyla by funkce $ $ \ mapsto \ sin (x) / x $ lepší model?

    Komentáře

    • Díky. Získávám zbytkový součet čtverců: 0,01997. Myslím, že s řešením od Hong Ooi výše dostávám přesně to samé. Je algo stejné? Jak také vykreslím výsledek NLS?
    • Ano, algoritmy jsou stejné v tom smyslu, že pokud fungují (ne ' uvíznou v některých místní minimum) dávají stejnou odpověď. V závislosti na hodnotě dané method= mohou být přesně stejné.
    • Přidal jsem dva řádky pro vygenerování grafu.

    Napsat komentář

    Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *