13

clarafromlibrary(cluster)が NA を許可していることを知って驚きました。しかし、関数のドキュメントには、これらの値をどのように処理するかについては何も書かれていません。

だから私の質問は:

  1. claraNA はどのように処理されますか?
  2. これはどういうわけかkmeans(Nasは許可されていません)に使用できますか?

[更新]それで、clara関数内にコード行が見つかりました:

inax <- is.na(x)
valmisdat <- 1.1 * max(abs(range(x, na.rm = TRUE)))
x[inax] <- valmisdat

による欠損値置換を行いますvalmisdat。そのような式を使用する理由がわかりません。何か案は?NAを各列で個別に扱い、平均値/中央値に置き換える方が「自然」でしょうか?

4

3 に答える 3

9

明示されていませんが、ヘルプページNAに記載されている方法で処理されると思います。?daisy詳細セクションには次の項目があります。

デイジー アルゴリズムでは、x の行の欠損値は、その行に関連する非類似度には含まれません。

内部的に同じコードが使用されることを考えると、データ内の s を処理できることclara()を理解する方法ですNA-それらは計算に参加しません。これは、そのような場合に合理的に標準的な処理方法であり、たとえば、Gower の一般化類似度係数の定義で使用されます。

更新Cソースは、これ (上記) がs によって処理されるclara.c方法であることを明確に示しています (の350-356 行目):NAclara()./src/clara.c

    if (has_NA && jtmd[j] < 0) { /* x[,j] has some Missing (NA) */
        /* in the following line (Fortran!), x[-2] ==> seg.fault
           {BDR to R-core, Sat, 3 Aug 2002} */
        if (x[lj] == valmd[j] || x[kj] == valmd[j]) {
        continue /* next j */;
        }
    }
于 2012-05-23T14:19:19.600 に答える
3

kmeans行の欠損値を無視して、欠損データを処理できるかどうかはわかりません。

には 2 つの手順がありますkmeans

  1. 観測値と元のクラスター平均の間の距離を計算します。
  2. 新しく計算された距離に基づいて新しいクラスター平均を更新します。

観測データに欠落がある場合: ステップ 1 は、clara/pam/daisyパッケージのように距離メトリックを適切に調整することで処理できます。ただし、ステップ 2 は、観測の各列に何らかの値がある場合にのみ実行できます。kmeansしたがって、代入は、欠損データを処理するための次善のオプションである可能性があります。

于 2014-03-05T08:37:42.617 に答える
0

Clara の c コードを見ると、clara アルゴリズムでは、観測値に欠損値がある場合、平方和が欠損値の数に比例して「減少」することに気付きました。これは間違っていると思います! clara.cの 646 行目は " dsum *= (nobs / pp) " のようなもので、観測値 (nobs) の各ペアの非欠損値の数をカウントし、それを変数 (pp) の数で割り、乗算することを示しています。これは二乗和です。他の方法、つまり「 dsum *= (pp / nobs) 」で行う必要があると思います。

于 2016-03-06T23:21:45.037 に答える