mar*_*arw 7 plot r ellipse phonetics
我正在绘制F1/F2元音图(这里有一个例子).每个元音都有几个点/值,我想在点周围绘制一个椭圆,这样:
我可能会让事情复杂化,但三角学和数学对我来说是希腊语.以下是我尝试过的.
Ellipsoidhull()
Ellipsoidhull()在包"cluster"中.如果我将具有F1和F2的矩阵传递给函数,它似乎计算椭圆的中心,但方向值很大.例如:
> 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
Run Code Online (Sandbox Code Playgroud)
如果传递给ellipsoidhull:
> 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
Run Code Online (Sandbox Code Playgroud)
我想要弄清楚如何绘制椭圆并不难,但"形状矩阵"(最大/最小半径值?)太高了.顺便说一句,感谢Freednode上的#R提示.
来自EMU-R的源代码
然后,我看了一下与EMU一起使用的EMU-R,R包的代码,其中包括用椭球绘制F1/F2.似乎这样做的代码在这里,但我不明白椭圆是如何绘制的.
任何帮助赞赏.
42-*_*42- 13
require(car)
x=rnorm(100)
y=1+.3*x+.3*rnorm(100)
dataEllipse(x,y, levels=0.80)
Run Code Online (Sandbox Code Playgroud)
所以你的数据:
with(olm ,dataEllipse(ol.f1, ol.f2, levels=0.8) )
Run Code Online (Sandbox Code Playgroud)
另一个包mixtools具有类似的功能,但使用alpha级而不是1-alpha:
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)
Run Code Online (Sandbox Code Playgroud)
这将使用新估计覆盖早期的情节(在这种情况下略微变窄).