Я хотел бы изучить профиль двух модальностей категориальной переменной во времени по отношению к заданному набору других категориальных переменных. Я вставляю воспроизводимый пример такого набора данных ниже.
set.seed(90114)
V1<-sample(rep(c("a", "A"), 100))
V2<-sample(rep(c("a", "A", "b", "B"), 50))
V3<-sample(rep(c("F", "M", "I"), 67), 200)
V4<-sample(rep(c("C", "R"), 100))
V5<-sample(rep(c(1970, 1980, 1990, 2000, 2010), 40))
data<-data.frame(V1, V2, V3, V4, V5)
Чтобы изучить поведение таких модальностей, я решил использовать анализ множественных соответствий (пакет FactoMineR
). Чтобы учесть изменение во времени, можно разделить набор данных на 5 подвыборок, которые представляют разные уровни V5, а затем выполнить MCA для каждого подмножества. Остальная часть анализа состоит в сравнении положения модальностей на разных биплотах. Однако такая практика не без проблем, если исходный набор данных слишком мал. В таком случае размеры могут быть перевернуты или, что еще хуже, расположение активных переменных может измениться от одного графика к другому.
Чтобы избежать этой проблемы, одним из решений может быть стабилизация положения активных переменных во всех подмножествах и последующее предсказание координат дополнительной переменной, позволяющей последней перемещаться во времени. Я где-то читал, что координаты модальности можно получить, вычислив средневзвешенное значение координат людей, у которых эта модальность находится. Таким образом, нахождение координат модальности для 1970 года будет сводиться к вычислению средневзвешенного значения координат индивидов в подмножестве 1970 года для этой модальности. Однако я не знаю, является ли это обычной практикой, и если да, то просто не знаю, как реализовать такие вычисления. Я вставляю остальную часть кода, чтобы вы могли визуализировать проблему.
data.mca<-MCA(data[, -5], quali.sup=1, graph=F)
# Retrieve the coordinates of the first and second dimension
DIM1<-data.mca$ind$coord[, 1]
DIM2<-data.mca$ind$coord[, 2]
# Append the coordinates to the original dataframe
data1<-data.frame(data, DIM1, DIM2)
# Split the data into 5 clusters according to V5 ("year")
data1.split<-split(data1, data1$V5)
data1.split<-lapply(data1.split, function(x) x=x[, -5]) # to remove the fifth column with the years, no longer needed
seventies<-as.data.frame(data1.split[1])
eightties<-as.data.frame(data1.split[2])
# ...
a.1970<-seventies[seventies$X1970.V1=="a",]
A.1970<-seventies[seventies$X1970.V1=="A",]
# The idea, then, is to find the coordinates of the modalities "a" and "A" by computing the weighted mean of their respective indivuduals for each subset. The arithmetic mean would yield
# a.1970.DIM1<-mean(a.1970$X1970.DIM1) # 0.0818
# a.1970.DIM2<-mean(a.1970$X1970.DIM2) # 0.1104
# and so on for the other levels of V5.
Заранее благодарю за помощь!