Hello everyone.
I am trying to apply ICA to Consumer Price Index. I have 10 variables that represent different consumer price indices for different sector of the Nigeria economy.
Each variable consists of 168 samples. I preprocessed the data by taking the first difference in order to satisfy stationarity after which I randomly generated
an orthogonal matrix to be used as the mixing matrix. After then, I called on the fastICA function to do the rest.
I am new to ICA. I was not thought but I am trying to work out something with it in order to understand it as an alternative to PCA as I learnt.
I am not so sure of the steps I took, so I decided to share it here with the code and dat for vetting and possible correction. Your input will be higjly appreciated.
I am also confused about the interpretation. Below is the code. I need to know if steps taken are right and the interpretation.
library(fastICA)
library(ggplot2)
library(dplyr)
library(tidyr)
library(tidyverse)
library(ggfortify)
library(pracma)
library(BBmisc)
library(ica)
# Source matrix
S = as.matrix(read.csv("sources.csv"))
#Transform to Time Series
S=ts(S)
#Taking the Difference to ensure stationarity
S=diff(S)
#Generating Random Orthogonal Mix Matrix
Q=randortho(10)
#Mixing the signals
X <- S%*%Q
#Transforming Mixed Signals to Time Series
X=ts(X)
#Applying fastICA
a <- fastICA(X, 10, alg.typ = "deflation", fun = "logcosh", alpha = 1, method = "R", row.norm = FALSE, maxit = 200, tol = 0.0001, verbose = FALSE)
par(mar=c(1,3,2,2), mfcol = c(10, 3))
plot(1:167, S[,1 ], type = "l", main = "Original Signals",xlab = "", ylab = "")
plot(1:167, S[,2 ], type = "l", xlab = "", ylab = "")
plot(1:167, S[,3 ], type = "l", xlab = "", ylab = "")
plot(1:167, S[,4 ], type = "l", xlab = "", ylab = "")
plot(1:167, S[,5 ], type = "l", xlab = "", ylab = "")
plot(1:167, S[,6 ], type = "l", xlab = "", ylab = "")
plot(1:167, S[,7 ], type = "l", xlab = "", ylab = "")
plot(1:167, S[,8 ], type = "l", xlab = "", ylab = "")
plot(1:167, S[,9 ], type = "l", xlab = "", ylab = "")
plot(1:167, S[,10 ], type = "l", xlab = "", ylab = "")
plot(1:167, X[,1 ], type = "l", main = "Mixed Signals",xlab = "", ylab = "")
plot(1:167, X[,2 ], type = "l", xlab = "", ylab = "")
plot(1:167, X[,3 ], type = "l", xlab = "", ylab = "")
plot(1:167, X[,4 ], type = "l", xlab = "", ylab = "")
plot(1:167, X[,5 ], type = "l", xlab = "", ylab = "")
plot(1:167, X[,6 ], type = "l", xlab = "", ylab = "")
plot(1:167, X[,7 ], type = "l", xlab = "", ylab = "")
plot(1:167, X[,8 ], type = "l", xlab = "", ylab = "")
plot(1:167, X[,8 ], type = "l", xlab = "", ylab = "")
plot(1:167, X[,10 ], type = "l", xlab = "", ylab = "")
plot(1:167, a$S[, 1], type = "l", main = "ICA source estimates",xlab = "", ylab = "")
plot(1:167, a$S[, 2], type = "l", xlab = "", ylab = "")
plot(1:167, a$S[, 3], type = "l", xlab = "", ylab = "")
plot(1:167, a$S[, 4], type = "l", xlab = "", ylab = "")
plot(1:167, a$S[, 5], type = "l", xlab = "", ylab = "")
plot(1:167, a$S[, 6], type = "l", xlab = "", ylab = "")
plot(1:167, a$S[, 7], type = "l", xlab = "", ylab = "")
plot(1:167, a$S[, 8], type = "l", xlab = "", ylab = "")
plot(1:167, a$S[, 9], type = "l", xlab = "", ylab = "")
plot(1:167, a$S[, 10], type = "l", xlab = "", ylab = "")
I am trying to apply ICA to Consumer Price Index. I have 10 variables that represent different consumer price indices for different sector of the Nigeria economy.
Each variable consists of 168 samples. I preprocessed the data by taking the first difference in order to satisfy stationarity after which I randomly generated
an orthogonal matrix to be used as the mixing matrix. After then, I called on the fastICA function to do the rest.
I am new to ICA. I was not thought but I am trying to work out something with it in order to understand it as an alternative to PCA as I learnt.
I am not so sure of the steps I took, so I decided to share it here with the code and dat for vetting and possible correction. Your input will be higjly appreciated.
I am also confused about the interpretation. Below is the code. I need to know if steps taken are right and the interpretation.
library(fastICA)
library(ggplot2)
library(dplyr)
library(tidyr)
library(tidyverse)
library(ggfortify)
library(pracma)
library(BBmisc)
library(ica)
# Source matrix
S = as.matrix(read.csv("sources.csv"))
#Transform to Time Series
S=ts(S)
#Taking the Difference to ensure stationarity
S=diff(S)
#Generating Random Orthogonal Mix Matrix
Q=randortho(10)
#Mixing the signals
X <- S%*%Q
#Transforming Mixed Signals to Time Series
X=ts(X)
#Applying fastICA
a <- fastICA(X, 10, alg.typ = "deflation", fun = "logcosh", alpha = 1, method = "R", row.norm = FALSE, maxit = 200, tol = 0.0001, verbose = FALSE)
par(mar=c(1,3,2,2), mfcol = c(10, 3))
plot(1:167, S[,1 ], type = "l", main = "Original Signals",xlab = "", ylab = "")
plot(1:167, S[,2 ], type = "l", xlab = "", ylab = "")
plot(1:167, S[,3 ], type = "l", xlab = "", ylab = "")
plot(1:167, S[,4 ], type = "l", xlab = "", ylab = "")
plot(1:167, S[,5 ], type = "l", xlab = "", ylab = "")
plot(1:167, S[,6 ], type = "l", xlab = "", ylab = "")
plot(1:167, S[,7 ], type = "l", xlab = "", ylab = "")
plot(1:167, S[,8 ], type = "l", xlab = "", ylab = "")
plot(1:167, S[,9 ], type = "l", xlab = "", ylab = "")
plot(1:167, S[,10 ], type = "l", xlab = "", ylab = "")
plot(1:167, X[,1 ], type = "l", main = "Mixed Signals",xlab = "", ylab = "")
plot(1:167, X[,2 ], type = "l", xlab = "", ylab = "")
plot(1:167, X[,3 ], type = "l", xlab = "", ylab = "")
plot(1:167, X[,4 ], type = "l", xlab = "", ylab = "")
plot(1:167, X[,5 ], type = "l", xlab = "", ylab = "")
plot(1:167, X[,6 ], type = "l", xlab = "", ylab = "")
plot(1:167, X[,7 ], type = "l", xlab = "", ylab = "")
plot(1:167, X[,8 ], type = "l", xlab = "", ylab = "")
plot(1:167, X[,8 ], type = "l", xlab = "", ylab = "")
plot(1:167, X[,10 ], type = "l", xlab = "", ylab = "")
plot(1:167, a$S[, 1], type = "l", main = "ICA source estimates",xlab = "", ylab = "")
plot(1:167, a$S[, 2], type = "l", xlab = "", ylab = "")
plot(1:167, a$S[, 3], type = "l", xlab = "", ylab = "")
plot(1:167, a$S[, 4], type = "l", xlab = "", ylab = "")
plot(1:167, a$S[, 5], type = "l", xlab = "", ylab = "")
plot(1:167, a$S[, 6], type = "l", xlab = "", ylab = "")
plot(1:167, a$S[, 7], type = "l", xlab = "", ylab = "")
plot(1:167, a$S[, 8], type = "l", xlab = "", ylab = "")
plot(1:167, a$S[, 9], type = "l", xlab = "", ylab = "")
plot(1:167, a$S[, 10], type = "l", xlab = "", ylab = "")