kommentit
Vastaa
Gaussin jakauman ja gaussin tiheyskäyrän sovittamisen välillä on ero. Mitä normalmixEM
on ensimmäinen. Haluamasi on (luulen) jälkimmäinen.
Jakelun sovittaminen on karkeasti sanottuna mitä tekisit, jos tekisit histogrammin ja yritti nähdä millainen muoto sillä oli. Sen sijaan teet sen sijaan yksinkertaisesti käyrän piirtämistä. Käyrällä on satunnaisesti keskellä kohouma, kuten mitä saat saamalla piirtämällä gaussian tiheysfunktion.
Saadaksesi mitä haluat, sinun on voi käyttää jotain esimerkiksi optim
, jotta käyrä sovitetaan tietoihisi. Seuraava koodi käyttää epälineaarisia pienimmän neliösumman etsimiseen kolmea parametria, jotka antavat parhaiten sopivan gaussin käyrän: m
on gaussin keskiarvo, s
on keskihajonta ja k
on mielivaltainen skaalausparametri (koska Gaussin tiheys on pakko integroida arvoon 1, kun taas tietosi eivät ole ”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))
Kommentit
- Pelasin tällä ratkaisulla, mutta sinä voitit minut 🙂 Pelatessani huomasin, että
optim
-kohdalle annetut alkuperäiset lähtöarvot olivat tärkeitä paljon , joten kun käytät tätä menetelmää, tarkista sopivuus graafisesti.
An swer
Ehdotan, että tähän analyysiin käytetään epälineaarista pienintä neliötä .
# 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))
Ja lähdöstä sain seuraavan sovitetun ”Gaussin käyrän”:
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) )
Sopivuus ei ole hämmästyttävä … Eikö ta ”x $ mapsto \ sin (x) / x $ -funktio olisi parempi malli?
Kommentit
- Kiitos. Saan jäännösneliösumman: 0,01997. Luulen, että saan täsmälleen saman edellä olevan Hong Ooin ratkaisun kanssa. Onko algo sama? Kuinka piirrän myös nls: n tuloksen?
- Joo, algoritmit ovat samat siinä mielessä, että jos ne toimivat (don ' ei juutu joihinkin paikallinen minimi), he antavat saman vastauksen.
method=
-arvolle annetusta arvosta riippuen ne voivat olla täsmälleen samat. - Lisäsin kaksi riviä juovan luomiseksi.
dput(r)
-merkkiä luomaan merkkijono, joka on helposti kopioitava ' n ' liitettävissä. Nyt meidän on syötettävä tiedot r: ään manuaalisesti …R
-ratkaisu erilliselle muuttujalle, kutenIndex
, näkyy stats.stackexchange. fi / a / 43004/919 ;R
-ratkaisu jatkuvalle muuttujalle on osoitteessa stats.stackexchange.com/questions/70153/… ; ja Excel-ratkaisu on osoitteessa stats.stackexchange.com/a/11563/919 .