您現在的位置是:首頁 > 攝影首頁攝影

R資料分析:潛增長模型LGM的做法和解釋,及其與混合模型對比

由 Codewar 發表于 攝影2021-09-03
簡介跑潛增長模型上面依然是給大家回憶和混合效應模型,希望大家對混合模型已經沒問題了,我們接著看潛增長模型:在潛增長模型中我們會把隨機截距和隨機斜率當作潛變數處理,相應地我們會固定住因子載荷,看下面這個示意圖,我們有隨機截距和隨機斜率,我們還把載

截距都是正的嗎

今天收到了北京大學老師打來的電話,問我如果沒有被資料科學方向的導師錄取,願不願意去讀生物統計的博士。

我婉拒了,些許遺憾,但不後悔,原因全是個人選擇,讀博挺好的,但是我決定換一種環境,去工作了。

從去年11月開始申請,到一系列的糾結,到現在做下決定,確實是釋然了很多。讀書很自由,但讀書並不是適合每一個人的選擇,或者說不是適合一個人特定時期的選擇,也許工作不順意又想去讀也說不定。

真的是越長大越體會到人生重要決定時的艱難迷茫。怎麼選都會遺憾,只有勇敢的走下去吧。

感慨一下哈,今天繼續給大家寫潛增長模型。

隨機效應

要理解隨機效應,首先還是要理解巢狀,比如同一個學校的學生,或者同一個人的縱向測量資料,這些資料我們不能想當然地認為它們之間是獨立的,但是線性迴歸的前提假設便是觀測的獨立性,所以對於巢狀資料一般不能用普通的迴歸分析法。

對於巢狀資料我們要用混合效應模型,混合效應模型之前的文章寫了很多,大家可以自己翻翻哦,為啥叫混合效應模型呢?

They are mixed, because there is a mixture of fixed effects and random effects。

因為這個模型可以同時估計固定效應和隨機效應,所以就叫它混合效應模型,

而其中的固定效應就和我們普通迴歸分析的迴歸係數一樣,是我們主要關心的東西

加上隨機效應就是為了讓我們能夠把巢狀資料的變異分解的更加的清晰:我們可以讓每個學校有每個學校自己的特徵(隨機截距或隨即斜率),也可以讓縱向測量中的每個人有自己的特徵(隨機截距或隨即斜率),

之所以要加隨機效應,是我們想讓巢狀資料的變異分解地更好從而使得我們的固定效應估計更準確。

混合效應模型的構成

給大家寫寫混合效應模型構成的例項,比如現在我要研究y和x的關係,但是資料是從學生中收集的,學生來自不同的地區,那麼這就是一個巢狀,學生巢狀在不同的地區。我們規定學生用i表示,地區用c表示,擬合的模型如下:

R資料分析:潛增長模型LGM的做法和解釋,及其與混合模型對比

上面這個模型中有一個隨機截距b0c,就是說不同的地區學生的起始x允許不一樣

怎麼不一樣呢?

就是這個隨機截距b0c為整體截距b0和不同地區截距uc的和(地區水平的變異可大可小,但我們要考慮它,這就是隨機效應的作用),如下式:

R資料分析:潛增長模型LGM的做法和解釋,及其與混合模型對比

我們會假定所有的uc都是服從正態分佈的。

此時我們把隨機截距模型改寫一下就成了下面這個樣子:

R資料分析:潛增長模型LGM的做法和解釋,及其與混合模型對比

或者:

R資料分析:潛增長模型LGM的做法和解釋,及其與混合模型對比

看第二個式子你就會明白隨機截距只是在常規迴歸模型上多了一個截距項uc,所以叫做隨機截距。

把隨機截距放在結構方程模型中理解

剛剛寫了隨機截距是服從正態分佈的,回想我們在結構方程中潛變數也是服從正態分佈的,有沒有什麼聯想呢?

是不是可以把隨機截距當作潛變數處理呢?

我們來試試,首先模擬資料,我們模擬一個縱向資料,共500個觀測,4個時間點:

set。seed(1234)n = 500timepoints = 4time = rep(0:3, times=n)subject = rep(1:n, each=4)

我們會有固定效應,還有隨機效應,對於本例來講,測量是巢狀在每個觀測上的(每個觀測測了4次),所以我們的隨機效應便是個體水平的截距或斜率,我們讓固定效應的截距和斜率分別為

0。5 和 0。25,隨機截距和隨機斜率的相關為0。2

intercept = 。5slope = 。25randomEffectsCorr = matrix(c(1,。2,。2,1), ncol=2) randomEffects = MASS::mvrnorm(n, mu=c(0,0), Sigma = randomEffectsCorr, empirical=T) %>% data。frame()colnames(randomEffects) = c(‘Int’, ‘Slope’)

於是此時我們的資料長這樣:

R資料分析:潛增長模型LGM的做法和解釋,及其與混合模型對比

我們接著模擬自變數和應變數,我們的思路就是把隨機效應加在固定效應上,就是把隨機截距和固定截距相加,把隨機斜率和固定斜率相加,自變數我們就用時間time就行,應變數的模擬程式碼如下:

sigma = 。5y1 = (intercept + randomEffects$Int[subject]) + # 隨機截距 (slope + randomEffects$Slope[subject])*time + #隨機斜率 rnorm(n*timepoints, mean=0, sd=sigma)d = data。frame(subject, time, y1)

好了,現在這個d便是我們要用的資料集,它長這樣:

R資料分析:潛增長模型LGM的做法和解釋,及其與混合模型對比

因為這個資料集是我們親自模擬出來的,所以我們知道它既有隨機斜率又有隨機截距,而且我們還知道固定效應和隨機效應大小分別是多少,我們現在就來逆操作,看看我們擬合一個混合模型能不能得到我們預想的係數:

library(lme4)mixedModel = lmer(y1 ~ time + (1 + time|subject), data=d) # 帶有隨機截距和隨機斜率的混合模型## summary(mixedModel)

執行上面的程式碼,就可以見證奇蹟了:

R資料分析:潛增長模型LGM的做法和解釋,及其與混合模型對比

我們可以看到,我們設定的固定斜率為0。25,圖中結果輸出為0。261,我們設定的固定截距為0。5,圖中結果輸出為0。487,因為我們本身還加了隨機誤差,除過這個隨機誤差之後可以說是完全吻合。

跑潛增長模型

上面依然是給大家回憶和混合效應模型,希望大家對混合模型已經沒問題了,我們接著看潛增長模型:

在潛增長模型中我們會把隨機截距和隨機斜率當作潛變數處理

,相應地我們會固定住因子載荷,

看下面這個示意圖,我們有隨機截距和隨機斜率,我們還把載荷都給固定了,注意,我們把不同時間點的截距的載荷都固定為1,斜率載荷的固定一定要反映出我們資料的實際間隔,通常是從0開始

R資料分析:潛增長模型LGM的做法和解釋,及其與混合模型對比

我們做潛增長模型的時候每個時間點的測量都是以變數納入的,所以我們的資料得是寬型資料,轉換方法如下:

dWide = d %>% spread(time, y1) %>% rename_at(vars(-subject), function(x) paste0(‘y’, x))head(dWide)

R資料分析:潛增長模型LGM的做法和解釋,及其與混合模型對比

我們的資料就成了每個觀測分別在不同的時間點時的y值,

此時時間點變成了變數而非變數的水平(看不懂這句話的話去看看tidydata)

資料處理好之後我們就可以來跑增長模型了,用到的是lavaan包中的growth方法:

model = “ # 將隨機效應作為潛變數 i =~ 1*y0 + 1*y1 + 1*y2 + 1*y3 s =~ 0*y0 + 1*y1 + 2*y2 + 3*y3”growthCurveModel = growth(model, data=dWide)summary(growthCurveModel)

執行上面的程式碼便可以得到增長模型的結果,如下圖:

R資料分析:潛增長模型LGM的做法和解釋,及其與混合模型對比

大家注意,結果很多地方都是空的,我們需要看的結果就是隨機效應的截距項:

R資料分析:潛增長模型LGM的做法和解釋,及其與混合模型對比

結果中有我們的潛變數i和s的截距,這個東西啥意思呢?

回憶一下,我們現在是在跑隨機效應,我們是將隨機截距和隨機斜率當作了潛變數,那麼這個i和s的截距就是整體的均值,大家可能又糊塗了,就是說,我們的隨機效應是服從正態分佈的,它的均值就是固定效應,隨機效應會在固定效應周圍,而這個潛變數i和s的截距就是均值,所以你就可以把i和s的截距認為是固定效應,希望我寫明白了,還不懂的話私信我吧。

還有點懷疑?

哈哈,沒事我們來驗證下嘛。記住上圖的截距分別是0。487和0。261。

我們跑潛增長模型的資料和混合效應的資料完全是一樣的,

我模擬資料的時候是規定截距和斜率分別是0。5和0。25的,我們i和s的截距是0。487和0。261,考慮我加了隨機誤差,所以這些值是完全一致的

,我們還可以用以下的程式碼調出來固定效應:

fixef(mixedModel)

R資料分析:潛增長模型LGM的做法和解釋,及其與混合模型對比

看到沒,依然是0。487和0。261,和我們的增長模型中的i和s的截距是一模一樣的。所以說,大家記住,增長模型是跑的隨機效應,所以我們要關心截距輸出,截距輸出就是整體均值,也就是固定效應。

增長模型的結果輸出中還有一部分結果是方差的估計:

R資料分析:潛增長模型LGM的做法和解釋,及其與混合模型對比

這個該怎麼看呢?這個不重要,但是大家可以瞭解一下

潛增長模型給每個時間點都會估計一個方差,但是在混合模型中認為不同時點的方差是一樣的,所以你會看到在混合模型中std。Dev為0。48,而在增長模型中每個時點的variance都不一樣,平均起來也是0。48。這個就是混合模型和增長模型的區別之一。

為了大家更好地理解上面的敘述,再給大家寫個例子:

我們用同樣的資料我們做增長模型的時候把方差固定住:

#將增長模型的變數方差固定就和混合模型結果一樣了model = “ # intercept and slope with fixed coefficients i =~ 1*y0 + 1*y1 + 1*y2 + 1*y3 s =~ 0*y0 + 1*y1 + 2*y2 + 3*y3 y0 ~~ resvar*y0 y1 ~~ resvar*y1 y2 ~~ resvar*y2 y3 ~~ resvar*y3”growthCurveModel = growth(model, data=dWide)summary(growthCurveModel)

結果如下:

R資料分析:潛增長模型LGM的做法和解釋,及其與混合模型對比

還是同樣的資料,我們再對比其與混合模型的結果:

R資料分析:潛增長模型LGM的做法和解釋,及其與混合模型對比

可以看出來,

增長模型固定方差後就和混合模型的結果是一樣的。也就是說大家記住,增長模型的和混合模型的區別就是增長模型認為不同時間變數的變異是不一樣的。

小結

今天從混合效應模型出發,進一步給大家解釋了混合效應模型和潛增長模型的區別,感謝大家耐心看完,自己的文章都寫的很細,程式碼都在原文中,希望大家都可以自己做一做,請關注後私信回覆“資料鏈接”獲取所有資料和本人收集的學習資料。如果對您有用請先收藏,再點贊轉發。

也歡迎大家的意見和建議,大家想了解什麼統計方法都可以在文章下留言,說不定我看見了就會給你寫教程哦。

如果你是一個大學本科生或研究生,如果你正在因為你的統計作業、資料分析、論文、報告、考試等發愁,如果你在使用SPSS,R,Python,Mplus, Excel中遇到任何問題,都可以聯絡我。因為我可以給您提供好的,詳細和耐心的資料分析服務。

如果你對Z檢驗,t檢驗,方差分析,多元方差分析,迴歸,卡方檢驗,相關,多水平模型,結構方程模型,中介調節,量表信效度等等統計技巧有任何問題,請私信我,獲取詳細和耐心的指導。

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資料分析:結構方程模型(SEM)介紹

文獻解析:結構方程模型的基礎知識

R資料分析:如何用lavaan包做結構方程模型,例項解析

R資料分析:結構方程模型畫圖以及模型比較,例項操練

廣義線性模型觀點:迴歸分析的基本原理與結構

文獻解讀:結構方程模型SEM基礎,小白看這個就基本夠了

R資料分析:生存分析的做法和結果解釋

R資料分析:如何做潛在剖面分析Mplus

R資料分析:用R語言做潛類別分析LCA

Mplus教程:如何做潛在類別分析LCA

R資料分析:非專業解說潛變數增長模型

R資料分析:潛在剖面分析LPA的做法與解釋

資料分析:頂級期刊文章的潛在剖面分析如何用Mplus 實現