2011-07-11 21 views
6

'da verilen noktaların yüzdesini içeren F1/F2 ses grafiğini çiziyorum (an example is here). Her sesli harf birkaç puan/değerleri vardır ve ben böylece puan civarında bir elips çizmek istediğiniz.Ellipse R

  • elips noktalarının (yani en az% 80 kapsayan yukarıdaki resimde "i" birkaç vardır değerler, ancak elips içerisinde bulunurlar.
  • , min/max değerleri yönünde yerleştirilmiştir.

Eşyaları karmaşık hale getirebilirim ama trigonometri ve matematik benim için Yunanca. Denediğim şey aşağıda.

Ellipsoidhull()

Ellipsoidhull() paketin "küme" bulunmaktadır. Bir fonksiyona F1 ve F2 ile bir matris aktarırsam, elipsin merkezini hesaplar gibi görünür, ancak yön değerleri çok büyüktür. Örneğin:

> olm 
     ol.f1 ol.f2 # f1/f2 data 
[1,] 501.3 850.5 
[2,] 488.5 906.5 
[3,] 456.3 857.0 
[4,] 505.8 895.3 
[5,] 499.5 898.0 
[6,] 431.8 891.5 
[7,] 416.3 870.5 
[8,] 506.0 887.8 
[9,] 500.3 985.8 
[10,] 513.5 955.3 
[11,] 531.5 958.0 
[12,] 483.0 847.3 
[13,] 533.3 982.8 
[14,] 480.8 881.8 
[15,] 484.3 884.5 

ellipsoidhull geçirilir ise:

> ellipsoidhull(olm) 
'ellipsoid' in 2 dimensions: 
center = (480.69 904.33); squared ave.radius d^2 = 2 
and shape matrix = 
     ol.f1 ol.f2 
ol.f1 2115.5 1449.5 
ol.f2 1449.5 3558.2 
    hence, area = 14636 

bunun bir elips çizmek anlamaya zor olmaz tahmin ama "şekil matrisi" (maks/dakika yarıçapı değerler?) çok yüksek. Btw, ipuçları için Freednode üzerinde #R teşekkürler.

Sonra DAÜ-R

Kaynak kod, ben, diğer şeyler arasında, F1/F2 çizebilirsiniz EMU ile çalışır EMU-R, R paketinin koduna göz attım Elipsoidlerin. Bunu yapan kod here ama elipsin nasıl çizildiğini anlamıyorum.

Herhangi bir yardım için teşekkür ederiz. Yani veri ile

cevap

12
require(car) 
x=rnorm(100) 
y=1+.3*x+.3*rnorm(100) 
dataEllipse(x,y, levels=0.80) 

:

with(olm ,dataEllipse(ol.f1, ol.f2, levels=0.8)) 

Başka paketin, mixtools, benzer yeteneklere sahiptir ancak 1-alfa yerine alfa düzeyi kullanır:

mu <- with(olm, c(mean(ol.f1), mean(ol.f2))) 
sigma <- var(olm) # returns a variance-covariance matrix. 
sigma 
#   ol.f1  ol.f2 
#ol.f1 1077.2098 865.9306 
#ol.f2 865.9306 2090.2021 

require(mixtools) 
#Loading required package: mixtools 
#Loading required package: boot 
# And you get a warning that ellipse from car is masked. 

ellipse(mu, sigma, alpha=0.2, npoints = 200, newplot = FALSE) 

örtüler yeni tahminin daha önceki arsa (ki bu durumda bu durum biraz daha dardır.) This is the comparison of the two methods

+0

+1 Bunun için sen. Tam olarak bunu yapmak için kendi fonksiyonumu yazmak için önemli miktarda zaman harcadım ... Bu kodu ilgiyle inceleyeceğim. – Andrie

+0

Oldukça yaygın bir görev olmalı. Bunun, bu servisi yapan CRAN paketlerindeki işlev listesini tükettiğini sanmıyorum. "Yoğunluk çalışması" yaparken geçmişte başkalarını da bulduğuma eminim. –

+0

Bu detaylı ve resimli cevap için teşekkürler! Bu ASAP'ı uygulamak için sabırsızlanıyorum. – marw