
今回の質問の意図を端的に申せば、「画像のようなデータセットにおいて、"x1", "x2", "x3"の三変数を用いて"Team"をクラスタリングしたい」というものです。
データをインポートし、三つの変数を選択し、クラスター解析を行うと、"Team"を因子の名前として表示することができず、行の数字が名前として表示されてしまいます。
平たく申しますと、樹形図の枝先にくっつく名前が、チーム名(011, 012, ...)になるようにしたいのです。
R コマンダー入門
(http://www.ec.kansai-u.ac.jp/user/arakit/Getting …)
のpp.12-13において、『たいていの場合,R コマンダーは,数値変数と因子とを区別し,因子の平均を計算するといった間違いを行うことを防ぐ』との記述がありますが、私のデータセットにおいて"Team"は数値であり、数値変数として扱われてしまっているのが問題であると考えました。
そこで、以下の手順で"Team"の因子への変換を試みました。
データ→アクティブデータセット内の変数の管理→数値変数を因子に変換→変数("Team"を選択)→OK
※因子水準は「水準名を指定」「数値で」の両方試しました。
しかし残念ながら、この設定を行い三変数によるクラスタリングを行っても、"Team"を因子の名前として表示することができず、行の数字が表示されてしまいます。
煩雑な文章になってしまい、かつ初歩的な質問ばかりで恐縮ですが、なにとぞよろしくお願いいたします。
(本題から外れますが、三変数はそれぞれスケールが違うので標準化する予定です)

A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
row.names(data) <- data$Team
で、チーム名を行名称にしたら、その後、データから取り除いておかないと
解析に使われてしまいますよ。
data <- data[,-c("Team")]
とすれば良いと思います。
head(data)
で、Team列が消えていればOKです。
No.2
- 回答日時:
#3です。
すみません。Rコマンダーと、Rスタジオを混同していました。Rコマンダーは初心者用のツールですね。
って、ことは、ご質問者さんは、Rのスクリプトを書くのって、難しい人ですか。
No.1
- 回答日時:
私は、コマンダーのようなツールは使わずエディタを使っていますので、スクリプトで回答します。
コマンダーの操作ではなく、スクリプト窓を見て比較して下さい。ご質問者は、なにしろ、行名を変更しようという操作を何もしていませんよね。
コマンダーではできないのかな。
rownames(x) <- x[,1]
x <- x[,-1]
でできます。
xがない、と言われるなら、xは、読み込んだ時の配列名に変えて実行してみてください。
それから、エクセルの画面を見て、すぐにおかしいと分かります。なぜ、チーム名なのに"011"というようにダブルコーテーションを付けないのですか。今、このデータをRにもってくると数値として扱われています。東京西Aとか文字が入っていれば、distをとる時点でエラーが出るはずです。
また、ご質問者がコマンダー上で行われた操作は、その列を因子として扱うということで、1,2,3,・・・という順序尺度に変更しているだけです。つまり、100,105,100であっても数字1,2,1に置き換わるということです。
さて、表示データでクラスター分析(通常のユークリッド距離で、ウォード法は使わず階層的に)をやってみました。つぎのようなスクリプトでできます。
途中途中で、xをダンプして表示していますので、それぞれの段階でどういうように変換(列が行名称にかわったり)しているのか確認して下さい。
コマンダーは開発ツールなので、初心者は使わない方が良いと思います。まずはスクリプトを書くことに習熟することが肝要だと思います。
rm(list=ls())
x <- data.frame(matrix(c(
3.17, 5, 31,
3.18, 9, 45,
2.71, 3, 61,
3.28, 6, 47,
1.94, 8, 22,
4.16, 6, 48,
3.62,11, 47,
2.22, 6, 48,
2.42, 5, 47,
2.95, 5, 50),
ncol=3,byrow=T))
name <- c(
"011",
"012",
"013",
"014",
"015",
"016",
"017",
"018",
"019",
"020")
x <- cbind(name,x)
x # 通常はこれを読み込んでいる
colnames(x) <- c("Team","x1","x2","x3")
rownames(x) <- x[,1]
x <- x[,-1]
x
x <- scale(x)
x
d <- dist(x)
result <- hclust(d)
plot(result)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
AOとAB型の親からAB型の子供は...
-
SD法で得たデータを因子分析す...
-
因子分析においてのKMOの重要性
-
spssでの逆転項目の処理について
-
因子分析を行おうとしています。
-
家族全員血液型が違います
-
因子分析における共通性について
-
SD法の評価尺度について
-
心理学統計について 急ぎです(...
-
相関分析と重回帰分析
-
因子分析のあとはどうすれば?
-
項目ー全体相関について
-
因子分析の因子負荷量について
-
「危険分子」と「危険因子」は...
-
「~と~を」と「~と~とを」...
-
t検定で自由度がn-1の場合...
-
今日は 日経平均が高いところか...
-
心理学実験 『触2点閾』について
-
「知っていない」という日本語...
-
【至急】心理学の触二点閾実験...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
因子分析においてのKMOの重要性
-
α係数について教えてください。
-
「危険分子」と「危険因子」は...
-
SPSSで分析できない(因子分析)
-
residualizsdの意味を教えてく...
-
家族全員血液型が違います
-
心理学統計について 急ぎです(...
-
SPSSの出力の見方(主因子...
-
相関分析と重回帰分析
-
逆転項目を直すとα係数がマイナ...
-
バリマックス回転って?
-
SD法で得たデータを因子分析す...
-
パス解析
-
因子分析とクロンバックα係数に...
-
AMOS 相関係数が1を超えます
-
R commanderによるクラスター解析
-
理想因子
-
因子分析の因子負荷量について
-
SD法の評価尺度について
-
因子分析のあとはどうすれば?
おすすめ情報
恥ずかしながらその通りです。
ただ、安閑としていたわけではなく、console上でスクリプトによりチーム名を行の名前とする方法は把握しました。
> data_file <- "cluster_eclipse.csv"
> data <- read.csv(data_file)
> row.names(data) <- data$Team
> head(data)
Team x1 x2 x3
11 11 3.17 5 31
12 12 3.18 9 45
13 13 2.71 3 61
14 14 3.28 6 47
15 15 1.94 8 22
16 16 4.16 6 48
本来、スクリプトにじっくり取り組んでいくべきだと思いますが、Rコマンダーのメニューでうまくいく方法があるか、適切なスクリプトを併用するで解決できるかを知りたいです。
ご回答いただきながらレスポンスが遅くなり失礼しました。
Console上で、ご指摘の方法を試したところエラーが発生してしまいました。
> data_file <- "cluster_eclipse.csv"
> data <- read.csv(data_file)
> row.names(data) <- data$Team
> data <- data[,-c("Team")]
-c("Team") でエラー: 単項演算子に対する引数が不正です
以上はConsoleのみで操作した結果です。
R commanderを使用して試したことは、
R commander上でデータをインポートしたのちに、Console上で
> row.names(data) <- data$Team
> data <- data[,-c("Team")]
とやってみましたが、同様のエラーが発生しています。