★ クラスター分析の2つ(多数)のグループに分類 ★

 69 クラスター分析の2つ(多数)のグループに分類  yamachan  2001/08/16 (木) 03:10
  70 Re: クラスター分析の2つ(多数)のグループに分類  青木繁伸  2001/08/16 (木) 11:18
   71 Re^2: クラスター分析の2つ(多数)のグループに分類  青木繁伸  2001/08/16 (木) 11:19
    72 Re^3: クラスター分析の2つ(多数)のグループに分類  青木繁伸  2001/08/16 (木) 11:20
     91 Re^4: クラスター分析の3つ(多数)のグループに分類つづき  yamachan  2001/08/18 (土) 02:04
     90 Re^4: クラスター分析の3つ(多数)のグループに分類  yamachan  2001/08/18 (土) 02:01
     77 Re^4: クラスター分析の2つ(多数)のグループに分類  yamachan  2001/08/16 (木) 17:46


69. クラスター分析の2つ(多数)のグループに分類  yamachan  2001/08/16 (木) 03:10
クラスター分析の2つ(多数)のグループに分類する方法についてこちらの方のページでVBAのクラスター分析を使用させていただいております。
そのような中でSPSSで所属クラスタで2つ(多数)のグループに分類を行うという方法があるのですが,これらをVBAで実現するには,どのような過程でおこなっていけばよろしいでしょうか?ご教授よろしくお願いいたします。

変数 所属クラスタ
11   1
12   1
30   2
30   2
とデータとしてい表示を行う方法です。

     [このページのトップへ]


70. Re: クラスター分析の2つ(多数)のグループに分類  青木繁伸  2001/08/16 (木) 11:18
> 変数 所属クラスタ
> 11   1
> 12   1
> 30   2
> 30   2
> とデータとしてい表示を行う方法です。

ケース 所属クラスタ
 1    2
 2    2
 3    1
 :    :
ということですか?
それとも,最初の列は各ケースがとるある変数の値ということですか?
後者ならば,通し番号の代わりに実際のデータを書くだけだからたいした変更ではないと思います。


つづく

     [このページのトップへ]


71. Re^2: クラスター分析の2つ(多数)のグループに分類  青木繁伸  2001/08/16 (木) 11:19
つづき

各ケースの所属クラスタの番号を書き出すのは以下のようにすればいいでしょう。
クラスターの形成過程は,pair1(), pair2() という配列に入っています。
出力結果の最初の方の,融合クラスターと書いてある下の2列にその内容が入っています。ちなみに,dist()という配列には平方距離が入っています。
これらを使えば3つ以上のクラスターに分けたときの情報も書き出せると思いますが,ちょっと面倒ですかね。

つづく

     [このページのトップへ]


72. Re^3: クラスター分析の2つ(多数)のグループに分類  青木繁伸  2001/08/16 (木) 11:20
2つのクラスターに分けるときには比較的簡単です。以下のようにします。

まず,clustan サブルーチンの最後の方 End Sub の前に一行挿入。
    fullgra nc, dist, kgg, pair1, pair2, label, normalize, row, col
    listout pair1, pair2, nc, row, col  ←この行を追加
End Sub

そして,適当な場所に(上の End Sub の次にでも)以下の関数を追加。
Sub listout(pair1() As Integer, pair2() As Integer, nc As Integer, row As Integer, col As Integer)
    Dim i As Integer
    Dim list() As Integer
    ReDim list(nc)
    row = row + 1
    Cells(row, col) = "ケース番号"
    Cells(row, col + 1) = "クラスター番号"
    row = row + 1
    list(pair1(nc - 1) + 1) = 1
    list(pair2(nc - 1) + 1) = 2
    For i = nc - 2 To 1 Step -1
        list(pair2(i) + 1) = list(pair1(i) + 1)
    Next i
    For i = 1 To nc
        Cells(row, col) = i
        Cells(row, col + 1) = list(i)
        row = row + 1
    Next i
End Sub

     [このページのトップへ]


91. Re^4: クラスター分析の3つ(多数)のグループに分類つづき  yamachan  2001/08/18 (土) 02:04
3つのグループに分類 つづきです。
一見うまくいったように見えたのですが,
以下のようなデータ
71.77
70.63
72.91
92.28
91.14
75.19
76.33
80.89
78.61
74.05


82.37
80.85
120.51
155.59
154.07
157.12
85.42
123.56
79.32
158.64
には対応できません。
自分自身でも,根本的になにか違うのでは,ないかと考えています。
よろしくご教授をお願いいたします

     [このページのトップへ]


90. Re^4: クラスター分析の3つ(多数)のグループに分類  yamachan  2001/08/18 (土) 02:01
3つのグループに分類
先日はありがとうございました。2つのグループは,おかげさまで検出を行なえました。現在3つのグループに挑戦しているのですが,うまくいきません。

以下のプログラムに次のものを挿入いたしました。
---------------------------------------------------------------------
         list(pair2(nc - 2) + 1) = 3
         For i = nc - 2 To 1 Step -1
             If list(pair2(i) + 1) = 1 Or list(pair2(i) + 1) = 2 Then
             Else
                 list(pair2(i) + 1) = list(pair2(nc - 2) + 1)
             End If
         Next i
---------------------------------------------------------------------
>     For i = 1 To nc
>         Cells(row, col) = i
>         Cells(row, col + 1) = list(i)
>         row = row + 1
>     Next i
> End Sub
にいれました。

     [このページのトップへ]


77. Re^4: クラスター分析の2つ(多数)のグループに分類  yamachan  2001/08/16 (木) 17:46
青木様
ご丁寧にどうもありがとうございます。
一度行ってみます。

     [このページのトップへ]


● 「統計学関連なんでもあり」の過去ログ--- 015 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る