前回は主成分分析を説明した。この手法は、
p変量(p次元)の観測値をm個(m次元)の主成分に縮約させる方法であった。
この意味では、因子分析も同じような方法であるのだが、
主成分分析の場合は、
データの散らばり方を捉えてデータ特性を把握する手法である。
今回説明する因子分析は、変数間に(潜在的な)構造を持ち込んで関係を探る手法である。
この手法は心理学の分野で広く利用されている。
/* Lesson 10-1 */
/* File Name = fact01.sas 01/10/97 */
data food; :
infile 'food.dat'; : ファイルの読み込み
input X01-X10; : 変量リスト、連続的に
label X01='M(-15)' : 各変量に解りやすい名前を付ける
X02='M(16-20)' : M : 男性
X03='M(21-30)' : F : 女性
X04='M(31-40)' : ()内 : 年齢
X05='M(41-)' :
X06='F(-15)' :
X07='F(16-20)' :
X08='F(21-30)' :
X09='F(31-40)' :
X10='F(41-)'; :
:
proc print data=food(obs=10); : データの表示
run; :
proc factor data=food; : 因子分析
var X01-X10; : 解析に使う変量リスト
run; :
/* Lesson 10-2 */
/* File Name = fact02.sas 01/10/97 */
data food;
infile 'food.dat';
input X01-X10;
label X01='M(-15)'
X02='M(16-20)'
X03='M(21-30)'
X04='M(31-40)'
X05='M(41-)'
X06='F(-15)'
X07='F(16-20)'
X08='F(21-30)'
X09='F(31-40)'
X10='F(41-)';
proc print data=food(obs=10);
run; :
proc factor data=food nfactor=3 out=fscore; : 因子数3、出力の保存
var X01-X10; :
run; :
proc plot data=fscore; :
plot factor1*factor2/vref=0.0 href=0.0; : 第1因子 x 第2因子、軸
plot factor2*factor3/vref=0.0 href=0.0; : 第2因子 x 第3因子、軸
run; :
/* Lesson 10-3 */
/* File Name = fact03.sas 01/10/97 */
data food;
infile 'food.dat';
input X01-X10;
label X01='M(-15)'
X02='M(16-20)'
X03='M(21-30)'
X04='M(31-40)'
X05='M(41-)'
X06='F(-15)'
X07='F(16-20)'
X08='F(21-30)'
X09='F(31-40)'
X10='F(41-)';
proc print data=food(obs=10);
run;
proc factor data=food nfactor=3 rotate=varimax out=fscore2;
var X01-X10; : 回転の指定
run; :
proc plot data=fscore2;
plot factor1*factor2/vref=0.0 href=0.0;
plot factor2*factor3/vref=0.0 href=0.0;
plot factor3*factor1/vref=0.0 href=0.0;
run;
/* Lesson 10-4 */
/* File Name = fact04.sas 01/10/97 */
data hobby;
infile 'syumi.dat';
input code $ X1-X6;
label X1='M(-29)'
X2='M(30-49)'
X3='M(50-)'
X4='F(-29)'
X5='F(30-49)'
X6='F(50-)';
proc print data=hobby(obs=10);
run;
proc factor data=hobby nfactor=2 out=fscore;
var X1-X6;
run;
proc plot data=fscore; : 回転前
plot factor1*factor2=code/vref=0.0 href=0.0; : コード化した記号
run; :
proc factor data=hobby nfactor=2 rotate=varimax out=fscore2;
var X1-X6;
run;
proc plot data=fscore2; : 回転後
plot factor1*factor2=code/vref=0.0 href=0.0; : コード化した記号
run; :