Rによるデータ分析

Rによる時系列データの次元削減分析

多変量の時系列データについて、 Rによるデータ全体の可視化 のページでは、全部の変数を折れ線グラフにして、一度に見る方法を紹介しています。

このページは、 この方法の応用として、折れ線グラフにするデータに変換の処理をして、データの特徴をあぶり出しつつ、時系列の変化を見る方法になります。

変換の方法として、 主成分分析(PCA)、 独立成分分析(ICA)、 因子分析(FA)の3つタイプがあります。

Rのコード

下記のコードでは、 1行目の数字を変えることで、変換の種類を選べるようにしてあります。 2行目の数字を変えると、グラフの形が変わり、結果の見え方が変わります。

ICAとFAは、前処理としてPCAを実行して、説明するのに十分な変数の数を見積もるようにしてあります。

FAの回転は、varimaxにしてあります。

Dimension_reduction_type <- 1 # 手法の選択 1 = 変換無し、2 = PCA、3 = ICA、4 = FA
Line_graph <-1
# グラフの形の選択 1 =ひとつのグラフ、2 = 分割グラフ

library(ggplot2)
library(tidyr)
library(fastICA)
library(psych)
library(GPArotation)

setwd("C:/Rtest")
# 作業用ディレクトリを変更
Data <- read.csv("Data.csv", header=T)
# データを読み込み

if(Dimension_reduction_type == 1){
Data2 <- Data
} else if(Dimension_reduction_type == 2){
pc <- prcomp(Data, scale=TRUE,tol=0.01)
Data2 <- as.data.frame(pc$x)
summary(pc)
# PCAの結果を出力
} else if(Dimension_reduction_type == 3){
pc <- prcomp(Data, scale=TRUE, tol=0.01)
ic <- fastICA(Data, ncol(pc$x))
Data2 <- as.data.frame(ic$S)
summary(ic)
# ICAの結果を出力
} else if(Dimension_reduction_type == 4){
pc <- prcomp(Data, scale=TRUE, tol=0.01)
fa_result <- fa(Data, nfactors = ncol(pc$x), fm = "ml", rotate = "varimax")
Data2 <- as.data.frame(fa_result$scores)
fa_result$loadings
# FAの結果を出力
}

Data2$No <-as.numeric(row.names(Data2))
Data_long <- tidyr::gather(Data2, key="Yno", value = Ys, -No)
# グラフ用のデータを作成を作成

if(Line_graph == 1){
gplot <- ggplot(Data_long, aes(x=No,y=Ys, colour=Yno)) + geom_line()
# グラフを作成
} else {
gplot <- ggplot(Data_long, aes(x=No,y=Ys)) + geom_line() + facet_wrap(~Yno,scales="free")
# グラフを作成
}
gplot
# グラフを出力

上の図が、「Dimension_reduction_type <- 1」で変換をしない元のデータです。 下の図が、「Dimension_reduction_type <- 4」でFAを選んだ場合です。
「Dimension_reduction

「Dimension_reduction




Tweet データサイエンス教室