9

F1/F2 母音グラフを描いています (例はこちら)。各母音にはいくつかのポイント/値があり、ポイントの周りに楕円を描きたいので、次のようにします。

  • 楕円はポイントの少なくとも 80% をカバーします (つまり、上の図の「i」にはいくつかの値がありますが、それらは楕円内に含まれています)。
  • 最小値/最大値の方向に配置されます。

私は物事を複雑にしているかもしれませんが、三角法と数学は私にとってギリシャ語です. 以下は私が試したことです。

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

に渡された場合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 

楕円を描く方法を理解するのは難しくないと思いますが、「形状マトリックス」(最大/最小半径値?) が高すぎます。ところで、ヒントをくれた Freednode の #R に感謝します。

EMU-R からのソースコード

次に、楕円体で F1/F2 を描画できる EMU で動作する EMU-R、R パッケージのコードを調べました。それを行うと思われるコードはここにありますが、楕円がどのように描かれるかわかりません。

どんな助けでも感謝します。

4

1 に答える 1

13
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) )

別のパッケージ mixtools にも同様の機能がありますが、1-alpha ではなく 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)

これにより、以前のプロットが新しい推定値でオーバーレイされます (この場合はわずかに狭くなります。これは2つの方法の比較です

于 2011-07-11T20:13:18.970 に答える