Latent Profile Analysis (LPA) tries to identify clusters of individuals (i.e., latent profiles) based on responses to a series of continuous variables (i.e., indicators). LPA assumes that there are unobserved latent profiles that generate patterns of responses on indicator items.
潛在剖面分析要做的事情就是根據(jù)個(gè)體在連續(xù)變量上的響應(yīng)情況將個(gè)體分為互斥的群,或者說(shuō)互斥的剖面。
大家肯定還聽(tīng)過(guò)潛在類別分析,其實(shí)潛在剖面分析和潛在類別分析在統(tǒng)計(jì)上都是一樣的,唯一的不同就是顯變變量是分類變量(二分類)的時(shí)候我們叫它潛在類別,顯變量是連續(xù)變量的時(shí)候我們叫潛在剖面。
The difference between LPA and LCA is conceptual, not computational: LPA uses continuous indicators and LCA uses binary indicators
大家記住下面這張圖:
老規(guī)矩,今天還是帶著大家做一個(gè)潛在剖面分析的實(shí)例。
實(shí)例操練
今天手上有997個(gè)學(xué)生樣本的數(shù)據(jù)集interests_clean.csv,對(duì)于每個(gè)學(xué)生我們都調(diào)查了他的興趣愛(ài)好,總共有32個(gè)興趣愛(ài)好,我們會(huì)讓學(xué)生對(duì)每一個(gè)興趣的愛(ài)好程度以1-5分進(jìn)行打分,就得到了一個(gè)如下圖的數(shù)據(jù)集:
今天要做的就是對(duì)此數(shù)據(jù)集進(jìn)行潛剖面分析,我們希望通過(guò)學(xué)生對(duì)每個(gè)興趣的響應(yīng)將學(xué)生分為不同的剖面。
在進(jìn)行潛剖面分析的時(shí)候需要我們的數(shù)據(jù)是沒(méi)有缺失值的,同時(shí)我們有必要將所有的值進(jìn)行標(biāo)準(zhǔn)化處理,以便觀察不同剖面的差異從而給每個(gè)剖面命名。
interests_clustering <- interests_clean %>%
na.omit() %>%
mutate_all(list(scale))
上面的代碼就將原始數(shù)據(jù)集進(jìn)行了缺失刪除處理和標(biāo)準(zhǔn)化。
接下來(lái)我們首先探索一下對(duì)于我們的數(shù)據(jù)我們應(yīng)該分為幾個(gè)剖面,這個(gè)問(wèn)題一般情況下我們可以使用mclust包的mclustBIC看不同剖面模型的BIC,通常我們可以將不同模型的BIC畫(huà)出來(lái):
library(mclust)
BIC <- mclustBIC(interests_clustering)
plot(BIC)
summary(BIC)
看上面的BIC的變化圖和summaryBIC的結(jié)果,初步得到,對(duì)于我們的數(shù)據(jù)劃分3個(gè)剖面是比較合適的。
還有一個(gè)和BIC差不多的判斷剖面?zhèn)€數(shù)的指標(biāo)叫做ICL,Integrated Completed Likelikood,ICL對(duì)模型的不穩(wěn)定性會(huì)進(jìn)行懲罰,所以以ICL為標(biāo)準(zhǔn)得到的模型個(gè)數(shù)會(huì)更加穩(wěn)定,要得到ICL指標(biāo)只需要運(yùn)行以下代碼:
ICL <- mclustICL(interests_clustering)
plot(ICL)
summary(ICL)
看上面的ICL的變化圖和summaryICL的結(jié)果,也同樣得到,對(duì)于我們的數(shù)據(jù)劃分3個(gè)剖面是比較合適的。
還有一個(gè)指標(biāo)也是幫我們確定剖面?zhèn)€數(shù)的,叫做BLRT:
Bootstrap Likelihood Ratio Test (BLRT) which compares model fit between k-1 and k cluster models. In other words, it looks to see if an increase in profiles increases fit。
如上面的英文說(shuō)明,這個(gè)指標(biāo)就是幫我們看看,第 k-1 and k個(gè)模型之間是不是有差異,也就是說(shuō)看看在k-1個(gè)剖面的基礎(chǔ)上增加1個(gè)剖面后模型是不是會(huì)更好。
那么,我也來(lái)瞅瞅我的數(shù)據(jù)的BLRT指標(biāo)的結(jié)果:
mclustBootstrapLRT(interests_clustering, modelName = "VEE")
可以看到,BLRT這個(gè)指標(biāo)顯示剖面?zhèn)€數(shù)從1增加到2,從2增加到3都是有顯著性意義的,然后從3增加到4模型優(yōu)度就并沒(méi)有顯著變好,所以BLRT依然顯示我們的數(shù)據(jù)適合劃分為3個(gè)剖面,那么現(xiàn)在我們就可以放心大膽地去做啦。
擬合模型
模型擬合超級(jí)簡(jiǎn)單哦。
只需要用到Mclust這個(gè)函數(shù),然后把你的數(shù)據(jù)喂給它然后,規(guī)定好你要幾個(gè)剖面就行。
mod1 <- Mclust(interests_clustering, G = 3)
就這么簡(jiǎn)單??梢钥吹?個(gè)剖面中,每個(gè)剖面有多少個(gè)體等等信息。
潛剖面模型可視化
潛剖面模型的可視化可以幫助我們知道人群剖面在不同的顯變量上的反應(yīng)的平均水平:
we want to see how the profiles differ on the indicators, that is, the items that made up the profiles. If the solution is theoretically meaningful, we should see differences that make sense.
所以,首先我們就需要把剖面顯變量的均值給它從模型中提取出來(lái),代碼如下:
means <- data.frame(mod1$parameters$mean, stringsAsFactors = FALSE) %>%
rownames_to_column() %>%
rename(Interest = rowname) %>%
melt(id.vars = "Interest", variable.name = "Profile", value.name = "Mean") %>%
mutate(Mean = round(Mean, 2),
Mean = ifelse(Mean > 1, 1, Mean))
運(yùn)行上面的代碼就可以得到每個(gè)剖面的所有顯變量上的均值,上面代碼的思路如下:首先提取模型均值,然后將提取出的均值數(shù)據(jù)框列名變成變量,對(duì)列名變量改名后將數(shù)據(jù)由寬型數(shù)據(jù)變化為長(zhǎng)形數(shù)據(jù),考慮到我們畫(huà)圖時(shí)的縱坐標(biāo)是從0起的,所以對(duì)于已經(jīng)標(biāo)準(zhǔn)化的數(shù)據(jù)我們要將其最大值改1。
好吧,估計(jì)好多人看不懂了,但是你們先收藏著,代碼就在上面你們自己套自己的數(shù)據(jù)就行。
均值提取完了之后,我們開(kāi)始作圖啦
作圖要達(dá)到的結(jié)果就是:通過(guò)圖顯示出不同剖面在各個(gè)指標(biāo)上的響應(yīng)均值,從而幫助我們給剖面起名字。
對(duì)于本例,作圖代碼如下:
means %>%
ggplot(aes(Interest, Mean, group = Profile, color = Profile)) +
geom_point(size = 2.25) +
geom_line(size = 1.25) +
scale_x_discrete(limits = c("Active sport", "Adrenaline sports", "Passive sport",
"Countryside, outdoors", "Gardening", "Cars",
"Art exhibitions", "Dancing", "Musical instruments", "Theatre", "Writing", "Reading",
"Geography", "History", "Law", "Politics", "Psychology", "Religion", "Foreign languages",
"Biology", "Chemistry", "Mathematics", "Medicine", "Physics", "Science and technology",
"Internet", "PC",
"Celebrities", "Economy Management", "Fun with friends", "Shopping", "Pets")) +
labs(x = NULL, y = "Standardized mean interest") +
theme_bw(base_size = 14) +
theme(axis.text.x = element_text(angle = 45, hjust = 1), legend.position = "top")
上面都是很基本的ggplot2語(yǔ)法哈,我這兒將指標(biāo)進(jìn)行了重新排序,把比較相近的指標(biāo)放在了一起,比如所有的sport放在一起等等,這樣也是為了方便看圖給剖面起名字。
運(yùn)行上面的代碼,就可以得到輸出啦:
看,剖面3中的這些學(xué)生就屬于興趣愛(ài)好中規(guī)中矩的,剖面1的學(xué)生尤其喜愛(ài)生物,化學(xué)和醫(yī)學(xué),我們不妨將這個(gè)剖面命名為“理科愛(ài)好者”,同樣的剖面2的學(xué)生尤其喜歡互聯(lián)網(wǎng),PC,聚會(huì),我們不妨將這個(gè)剖面的學(xué)生命名為“愛(ài)好玩耍者”,還有剖面3的學(xué)生尤其對(duì)園藝和戶外活動(dòng)感興趣,所以我將它命名為“戶外運(yùn)動(dòng)愛(ài)好者”。
然后,給上圖改改圖例吧,改成我們的新的剖面命名:
p <- means %>%
mutate(Profile = recode(Profile,
X1 = "理科愛(ài)好者: 16%",
X2 = "愛(ài)好玩耍者: 60%",
X3 = "戶外運(yùn)動(dòng)愛(ài)好者: 24%")) %>%
ggplot(aes(Interest, Mean, group = Profile, color = Profile)) +
geom_point(size = 2.25) +
geom_line(size = 1.25) +
scale_x_discrete(limits = c("Active sport", "Adrenaline sports", "Passive sport",
"Countryside, outdoors", "Gardening", "Cars",
"Art exhibitions", "Dancing", "Musical instruments", "Theatre", "Writing", "Reading",
"Geography", "History", "Law", "Politics", "Psychology", "Religion", "Foreign languages",
"Biology", "Chemistry", "Mathematics", "Medicine", "Physics", "Science and technology",
"Internet", "PC",
"Celebrities", "Economy Management", "Fun with friends", "Shopping", "Pets")) +
labs(x = NULL, y = "Standardized mean interest") +
theme_bw(base_size = 14) +
theme(axis.text.x = element_text(angle = 45, hjust = 1), legend.position = "top")
好啦,大功告成,這個(gè)研究發(fā)個(gè)核心期刊沒(méi)問(wèn)題吧,哈哈哈。
同學(xué)們學(xué)會(huì)了嘛,歡迎留言。
小結(jié)
今天給大家寫(xiě)了潛在剖面分析的做法與解釋,感謝大家耐心看完,自己的文章都寫(xiě)的很細(xì),代碼都在原文中,希望大家都可以自己做一做,請(qǐng)關(guān)注后私信回復(fù)“數(shù)據(jù)鏈接”獲取所有數(shù)據(jù)和本人收集的學(xué)習(xí)資料。如果對(duì)您有用請(qǐng)先收藏,再點(diǎn)贊轉(zhuǎn)發(fā)。
也歡迎大家的意見(jiàn)和建議,大家想了解什么統(tǒng)計(jì)方法都可以在文章下留言,說(shuō)不定我看見(jiàn)了就會(huì)給你寫(xiě)教程哦。
如果你是一個(gè)大學(xué)本科生或研究生,如果你正在因?yàn)槟愕慕y(tǒng)計(jì)作業(yè)、數(shù)據(jù)分析、論文、報(bào)告、考試等發(fā)愁,如果你在使用SPSS,R,Python,Mplus, Excel中遇到任何問(wèn)題,都可以聯(lián)系我。因?yàn)槲铱梢越o您提供好的,詳細(xì)和耐心的數(shù)據(jù)分析服務(wù)。
如果你對(duì)Z檢驗(yàn),t檢驗(yàn),方差分析,多元方差分析,回歸,卡方檢驗(yàn),相關(guān),多水平模型,結(jié)構(gòu)方程模型,中介調(diào)節(jié),量表信效度等等統(tǒng)計(jì)技巧有任何問(wèn)題,請(qǐng)私信我,獲取詳細(xì)和耐心的指導(dǎo)。
If you are a student and you are worried about you statistical #Assignments, #Data #Analysis, #Thesis, #reports, #composing, #Quizzes, Exams.. And if you are facing problem in #SPSS, #R-Programming, #Excel, Mplus, then contact me. Because I could provide you the best services for your Data Analysis.
Are you confused with statistical Techniques like z-test, t-test, ANOVA, MANOVA, Regression, Logistic Regression, Chi-Square, Correlation, Association, SEM, multilevel model, mediation and moderation etc. for your Data Analysis...??
Then Contact Me. I will solve your Problem...
加油吧,打工人!
猜你喜歡
R數(shù)據(jù)分析:用R語(yǔ)言做潛類別分析LCA
R數(shù)據(jù)分析:非專業(yè)解說(shuō)潛變量增長(zhǎng)模型