megjegyzések
Válasz
Különbség van a gauss eloszlás és a gauss sűrűség görbe illesztése között. Mi normalmixEM
művelet az előbbi. Amit szeretne, az (gondolom) az utóbbi.
A disztribúció illesztése nagyjából szólva azt tenné, ha hisztogramot készítene és megpróbálta megnézni, hogy milyen alakja van. Ahelyett, hogy egyszerűen egy görbét rajzolna. Ennek a görbének történetesen középen van egy púpja, például amit egy gauss-sűrűségfüggvény megrajzolásával kap.
Ahhoz, hogy megkapja, amit akar, valami olyasmit használhat, mint optim
, hogy illeszkedjen a görbe adataihoz. A következő kód nemlineáris legkisebb négyzetekkel fogja megtalálni a legjobban illő gaussianus görbét adó három paramétert: m
a gauss átlag, s
a szórás, a k
pedig egy tetszőleges méretezési paraméter (mivel a gaussianus sűrűségét korlátozni kell, hogy integrálódjon 1-re, míg az adatai nem “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))
Megjegyzések
- Játszottam ezzel a megoldással, de engem megvertél 🙂 A játék közben észrevettem, hogy a
optim
kezdőértékei sokat számítanak , tehát ha ezt a módszert használja, ellenőrizze az illeszkedést grafikusan.
An swer
Javaslom a nemlineáris legkisebb négyzetek használatát ehhez az elemzéshez.
# 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 kimenetből pedig a következő illesztett “Gauss-görbét” sikerült megszereznem:
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) )
Az illeszkedés nem csodálatos … Nem lenne “ta $ x \ mapsto \ sin (x) / x $ függvény jobb modell?
Megjegyzések
- Köszönöm. Maradék négyzetösszeget kapok: 0,01997. Azt hiszem, pontosan ugyanezt értem a fenti Hong Ooi megoldásával. Az algo ugyanaz? Hogyan ábrázolhatom az nls eredményét?
- Igen, az algoritmusok megegyeznek abban az értelemben, hogy ha működnek (ne ' ne ragadjanak meg egyesek helyi minimum) ugyanazt a választ adják. A (z)
method=
számára megadott értéktől függően pontosan megegyezhetnek. - Két sort adtam hozzá a diagram létrehozásához.
dput(r)
segítségével olyan karakterláncot hozhat létre, amely könnyen másolható ' n ' beilleszthető. Most kézzel kell beírnunk az adatokat r-be …R
megoldás egy olyan diszkrét változóhoz, mint aIndex
, a stats.stackexchange helyen jelenik meg. com / a / 43004/919 ; a folytonos változóra vonatkozóR
megoldás a stats.stackexchange.com/questions/70153/… ; és egy Excel megoldás a stats.stackexchange.com/a/11563/919 címen található.