質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Q&A

1回答

3185閲覧

クラスター分析で代表値の抽出

krn

総合スコア7

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

0グッド

0クリップ

投稿2017/12/22 07:56

Rでのクラスター分析について質問です。
質問内容はタイトルの通りです。

作業内容を説明すると、ある文献を参考にデータ処理を行っています。
Rでの主な作業は主成分分析を行い、そこで得られた主成分得点を元にクラスター分析を行うことです。(言葉で十分に説明できているか不明なのでここまでのコードを載せます。)

R

1> df <- read.table("studydata.csv", header=T, sep=",", row.names=1) 2> sd <- scale(df) 3> sdf <- data.frame(sd) 4> pca <- prcomp(sdf, scale=T) 5> pcax <- data.frame(pca$x) 6> km <- kmeans(pcax, 5)

5つのクラスターに分けました。
ここで、

各クラスターの主成分の平均値に近いものを偏差と標準偏差の関係から抽出する

とあるのですが具体的なアプローチ方法がわかりません。
参考統計式の記載があったので載せます。

クラスターXの第ni主成分の値:xi

クラスターXの第ni主成分の平均値:μi
クラスターXの第ni主成分の偏差:xi-μi
クラスターXの第ni主成分の標準偏差:σi
[X=クラスター番号(①~⑤)、n=主成分の番号(1,2,3,4)、i=要素の番号(①:i=1,…22、②:i=1,…3、③:i=1,…15、④:i=1,…14、⑤:i=1,…5)]
Σ(xi-μi/σi)=各要素の偏差/標準偏差の値の合計値
⇒最小となる要素

ネットや統計に関する参考書等に目を通しましたが、知識が浅く理解に困っております。
上記の計算をRで行えるのか、行える場合はコードを教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

まずここでkmというオブジェクトには計算結果に纏わるいろんな情報がゴッソリまとまったものが入っています。strという関数でその概要を眺めることができます。以下は標準添付のサンプルデータで試してみた例。

R

1str(km) 2List of 9 3 $ cluster : int [1:150] 2 2 2 2 2 2 2 2 2 2 ... 4 $ centers : num [1:3, 1:4] 6.85 5.01 5.9 3.07 3.43 ... 5 ..- attr(*, "dimnames")=List of 2 6 .. ..$ : chr [1:3] "1" "2" "3" 7 .. ..$ : chr [1:4] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" 8 $ totss : num 681 9 $ withinss : num [1:3] 23.9 15.2 39.8 10 $ tot.withinss: num 78.9 11 $ betweenss : num 603 12 $ size : int [1:3] 38 50 62 13 $ iter : int 2 14 $ ifault : int 0 15 - attr(*, "class")= chr "kmeans"

たとえば元データがどのクラスターに割当てられたかはkm$clusterを見れば良さそうだと分かります。
クラスター1に所属するデータだけからなるサブセットを作るなら:

R

1sdf.sub1 <- sdf[km$cluster==1, ]

クラスターXのなんちゃらを計算してみたいならsdf.sub1を相手にすればいいはずです。

試行錯誤して手順の見当が付いたら、全クラスタについて同様の処理を実行する為のforループを回すスクリプトを書いてみる。できればsapplyという関数の使い方を覚えてみる。大体そんな流れになると思います。

投稿2017/12/22 11:31

KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

krn

2017/12/23 12:49

回答ありがとうございます。 対象とすべきデータの抽出方法が把握できたのは大変ありがたいのですが、どちらかというと統計式(Σ以降の式です)の理解に困っています。言葉足らずでしたら申し訳ありません。 これはRで行えるものでしょうか?
KojiDoi

2017/12/23 13:04

統計と名の付くものなら大抵Rで何とかなるでしょう。 しかし統計式の理解と言われても 何処で引掛っているのか分からないので、具体的なアドバイスが困難です。 http://www.okadajp.org/RWiki/?cmd=read&page=R%E3%81%AE%E7%B5%B1%E8%A8%88%E8%A7%A3%E6%9E%90%E9%96%A2%E6%95%B0Tips このへんをよく読んで、 まずは スクリプトを組んでみること。それでどうしても先に進め無くなったら、先に進めなくなった状況の説明を添えて改めて質問するのです。 何一つ分かりません、ゼロから教えて下さいではダメです。
krn

2018/01/06 08:03

時間がかかりましたが、無事解決できました。アドバイスありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問