4

ecdfplot()パッケージの関数を使用する場合、計算された実際の値、つまり入力latticeExtraに対応する y 値を取得するにはどうすればよいですか?~x|g

調べてみました?ecdfplotが記載がありません。通常の高レベル機能ecdf()では、コマンドで機能しますplot=FALSEが、これは機能しませんecdfplot()

ecdfplot()ではなく使用したい理由は、グループ化変数ecdf()の値を計算する必要があるからです。ecdf()私もこのハンディッシュを行うことができることを知っていますが、ハイロードもあると確信しています。

ここに小さな例があります

u <- rnorm(100,0,1)
mygroup <- c(rep("group1",50),rep("group2",50))
ecdfplot(~u, groups=mygroup)

ここに画像の説明を入力

対応する x 値の各グループに与えられた y 値を抽出したいと思います。

4

2 に答える 2

10

基本パッケージの ecdf() 関数に固執する場合は、次のように簡単に実行できます。

  1. データを使用して ecdf 関数を作成します。

    fun.ecdf <- ecdf(x) # x is a vector of your data
    
  2. 次に、この「ecdf 関数」を使用して、元の並べ替えられたデータを含む、フィードする任意のベクトルの累積確率を生成します。

    my.ecdf <- fun.ecdf(sort(x))
    
于 2015-02-17T22:15:38.737 に答える
5

を使用したくないとおっしゃっていたことは承知していますecdfが、この場合、返されるトレリスオブジェクトからデータを取得するよりも、 を使用する方がはるかに簡単です。(結局のところ、それがすべてです。舞台裏でそれを行っているだけです)。ecdfplotecdfplot

あなたの例の場合、以下は各 ECDF の y 値の行列を取得します (どこにあるxのは入力全体uですが、別のものを選択することもできます)。

ecdfs = lapply(split(u, mygroup), ecdf)
ys = sapply(ecdfs, function(e) e(u))
# output:
#       group1 group2
#  [1,]   0.52   0.72
#  [2,]   0.68   0.78
#  [3,]   0.62   0.78
#  [4,]   0.66   0.78
#  [5,]   0.72   0.80
#  [6,]   0.86   0.94
#  [7,]   0.10   0.26
#  [8,]   0.90   0.94
# ...

ETA: 各列をその列の 50 個の x 値に対応させたい場合は、次のようにします。

ys = sapply(split(u, mygroup), function(g) ecdf(g)(g))

(各グループの値の数が同じでない場合、これは列を持つマトリックスではなくリストになることに注意してください)。

于 2012-08-29T01:35:36.307 に答える