驗證性因子分析(什么數據適合因子分析)創2021-06-09 11:07·Codewar
快一個月沒更新文章啦,今天收到好幾個粉絲的催更私信,好的吧,實在對不住大家期待的眼神,看樣子不能再拖啦,想想寫啥好呢,大家咨詢比較多的,混合模型算一個,今天就繼續給大家寫寫混合模型如何做吧。
(資料圖)
混合模型一般都可以用lme4這個包解決,lme4既可以做線性混合模型,也可以做廣義線性混合模型還可以做非線性混合模型,大家有需要可以只研究這一個包就行。
所謂混合模型就是既有固定效應又有隨機效應的模型:
“mixedeffects”, denotes a model that incorporates both fixed- and random-effects terms in a linear predictor expression from which the conditional mean of the response can be evaluated
第一部分 線性混合模型直接上例子,數據是來自一篇研究睡眠剝奪的文獻,整個數據大概長下圖這樣,其中我們的受試者在day0的時候可以睡到自然醒,在之后的日子里所有的受試者就只能睡3個小時了,我們的響應變量是Reaction,就是對受試者做的測驗的響應時間,我現在關心睡眠剝奪后,響應時間的變化情況:
對于這么一個縱向數據,
我們來捋一捋:我們只有18個人受試者,每個受試者隨訪10次,我們需要明白的是,此時我們的每一次測量是嵌套在人的水平上的,我們可以認為,不同人自己的10次測量是有強烈的相關性的,而不同人之間的這種關系又不一定是相同的。
直觀一點,我們可以畫出來每一天所有人響應時間和睡眠剝奪的變化,畫出來就是下圖:
可以看到我們上面的這個大圖是由很多個小圖組成的,每一個小圖中橫軸就是睡眠剝奪的時間,縱軸是反應時間。每個小圖就代表著我們要研究的睡眠剝奪和反應時間的關系(具體到人),但是我們也應該注意到這種關系在不同的人上是不同的,體現在:關系的斜率不同和截距不同。(這個關系的不同可以很明顯的在圖中看出來)
所以我們就可以擬合一個帶有隨機效應的混合模型:
fm1<-lmer(Reaction~Days+(Days|Subject),sleepstudy)
運行代碼后得到下面的結果:
結果中有隨機效應的標準差和固定效應的β估計,我得到的截距是251.4,斜率是10.5,這兩個系數就是我們研究的總體關系的表示,通常需要在文獻中匯報,就意味著睡眠不剝奪的時候人的反應時間是251.4,而睡眠每剝奪多一天反應時間增長10.5。
上面這個是最簡單的混合模型。我們繼續看:
lme4包高水平設置介紹混合模型公式
對于一個常見的混合模型,我們可以在lme4包中寫出來如下差不多的混合模型公式:
resp~FEexpr+(REexpr1|factor1)+(REexpr2|factor2)+...
這個公式中FEexpr就是固定效應,(REexpr1 | factor1)and(REexpr2 | factor2)都是隨機效應,理論上你可以弄很多個隨機效應但是實際操作中我們不會關心那么多。
理解混合模型公式
我們看到每一個隨機效應在公式中的表達都是(expr | factor)這樣的。豎杠前面的expr就是一個常規的回歸公式,豎杠后面的factor就是一個常規的因子,你可以把豎杠想象成回歸公式和因子的交互:
One way to think about the vertical bar operator is as a special kind of interaction betweenthe model matrix and the grouping factor。This interaction ensures that the columns of themodel matrix have different effects for each level of the grouping factor.
這種交互的意思就是在因子的不同水平,我們的回歸是不一樣的,這也正好和我們前面的解釋相對應,就是在不同的人的水平睡眠剝奪和響應時間的關系不一樣。
寫到這,希望大家能記住下面這張表:
這個表就給我們展示了常見的隨機效應的設置,比如(1 | g),就是說在因子g的不同水平,我們響應變量的截距都不一樣。表中的第二行有個offset,表示沒有固定效應。如果我們的數據是一個三層嵌套數據,我們可以用第三行的設定來表示隨機截距;如果你的數據沒有直接嵌套但是在g1和g2的不同水平上存在相關,那么可以用第四行的設定,這個在項目反應理論中比較常見。
在lme4中,默認認為同一個模型的截距和斜率是存在相關的,如果你確定截距和斜率無關那么設定隨機效應的時候就可以用兩個豎杠,或者把截距和斜率分開來寫,就是說(x || g)和x +(1 | g) + (0 + x | g)表達的隨機效應都是一樣的。
比如如果我認為睡眠剝奪和反應時間隨機效應的截距和斜率無關,我便可以做如下設定:
fm2<-lmer(Reaction~Days+(Days||Subject),sleepstudy)#截距和斜率無關的設定
有時候我們擬合一個后又想嘗試對模型進行改變,但又不想重寫,此時就可以直接對相似的模型基礎上進行更新:
模型的更新
比如我想在fm1的基礎上去掉隨機斜率只留隨機截距,我就可以用updata寫出如下代碼:
fm3<-update(fm1,.~.-(Days|Subject)+(1|Subject))#模型的更新
到底哪一個模型更好呢?
可以用anova方法進行模型間的比較:
anova(fm1,fm2,fm3)
運行代碼會輸出比較的結果:
其中,從模型比較的結果可以看出,給模型增加一個截距和斜率無關的隨機效應相比會使得模型的deviance變小,進一步將隨機效應設定為相關,并不能夠顯著地減小deviance,從而我們就可以知道fm2才是對數據擬合最好的模型。
第二部分 非線性混合模型非線性混合模型就是通過一個連接函數將線性模型進行拓展,并且同時再考慮隨機效應的模型。
The fixed-effects parameters describe the general patterns of the data and random-effects parameters describe specific clusters. If the model is nonlinear in the parameters,it is called a nonlinear mixed-effects model (Davidian &Giltinan, 2003)
非線性混合模型常常在生物制藥領域的分析中會用到,因為很多劑量反應并不是線性的,如果這個時候數據再有嵌套結構,那么就需要考慮非線性混合模型了。
看下面這個圖,這個圖描繪了不同人用了茶堿過后的反應,時間是橫軸,殘留是縱軸,和開篇線性模型中睡眠剝奪和反應時間的例子一樣,我們把每個人的關系都做了圖出來,不過從圖中可以明顯看出這種關系并不是簡單線性的。
其實這種不是線性的關系存在的情況很多。
比如漸進回歸:
再比如邏輯增長:
此時我們要注意到像這兩非線性關系模型的參數都不是簡單的一個斜率加個截距了。都有φ1,φ2,φ3三個額外參數。
這兒先給大家寫一個邏輯增長的實際例子:我現在有一個關于樹木周徑的數據集,每棵樹隨訪了7次,每次隨訪記錄數的年齡age,和周徑,我現在想研究在所有樹木中時間和周徑的關系。
很自然,我們可以想到不同的樹這個關系應該是不一樣的,我們想探求的一定是考慮了樹水平的變異之后的總體關系,所以不妨先畫出來每個樹的關系:
從圖中可以看到我們總共有5棵樹,基本關系是一致的,但存在些許變異相關(所以考慮混合模型),而且這個關系并不是線性的(時間越大周徑基本不改變了),所以我們應該考慮非線性的混合模型。
具體地,我們可以用nlmer方法來擬合非線性混合模型,方法參數包括3部分:首先是響應變量,然后是非線性函數,然后是混合效應公式:
The formula argument fornlmeris in three parts: the response, the nonlinear model function depending on covariates and a set of nonlinear model (nm) parameters, and the mixed-effects formula.
比如對我們的數據我就可以寫出如下SSlogis方法的代碼:
print(nm1<-nlmer(circumference~SSlogis(age,Asym,xmid,scal)~Asym|Tree,Orange,start=c(Asym=200,xmid=770,scal=120)),corr=FALSE)
此時我們選擇的非線性函數是邏輯增長函數SSlogis,剛剛給大家解釋了這個函數是有3個參數的,在上面的代碼中,age是我們的預測變量,Asym, xmid, scal分別是額外的三個參數(之前的邏輯增長的式子和Asym/(1+exp((xmid-input)/scal))等同):
進一步,擬合邏輯增長是要我們給出這些參數的初始值的,然后從初始值通過梯度下降尋找各個參數的最優解:
SSlogis has an attribute called "initial", which is a function that nls can call to compute reasonable starting values for fitting a logistic function to the input data.
所以我們看到代碼中都給出了響應參數的初始值。
運行上面代碼后輸出如下結果:
我們可以看到結果中的固定效應里面有Asym,Xmid,scal參數的估計結果。
那么這些參數如何解釋呢?
留個懸念我們下期再更。關注關注關注,嘿嘿。
小結很久沒更新了,今天給大家寫了如何用lme4做混合模型,包括線性和非線性的例子,感謝大家耐心看完,自己的文章都寫的很細,代碼都在原文中,希望大家都可以自己做一做,請關注后私信回復“數據鏈接”獲取所有數據和本人收集的學習資料。如果對您有用請先收藏,再點贊轉發。
也歡迎大家的意見和建議,大家想了解什么統計方法都可以在文章下留言,說不定我看見了就會給你寫教程哦,另咨詢代做請私信。
如果你是一個大學本科生或研究生,如果你正在因為你的統計作業、數據分析、論文、報告、考試等發愁,如果你在使用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數據分析:有調節的中介
R數據分析:用R語言做meta分析
R數據分析:用R語言做潛類別分析LCA
R數據分析:多分類邏輯回歸
R數據分析:如何做聚類分析,實操解析
R數據分析:主成分分析及可視化
R數據分析:混合效應模型實例
R數據分析:生存分析的做法與解釋續
R數據分析:如何做潛在剖面分析Mplus
R數據分析:中介作用與調節作用的分析與解釋
R數據分析:生存分析的做法和結果解釋
R數據分析:潛在剖面分析LPA的做法與解釋
R數據分析:逐步回歸的做法和原理,案例剖析
R數據分析:著名的“三門問題”的R語言模擬
R數據分析:潛變量與降維方法(主成分分析與因子分析)
R數據分析:雙分類變量的交互作用作圖
R數據分析:傾向性評分匹配實例操作
R數據分析:ROC曲線與模型評價實例
R數據分析:如何用R語言做meta分析,寫給小白
R數據分析:多水平模型詳細說明
R數據分析:如何用R做驗證性因子分析及畫圖,實例操練
R數據分析:多元邏輯斯蒂回歸的做法
R數據分析:嵌套數據分析為什么要用加隨機效應?終于解釋清楚了
R數據分析:交叉滯后模型非專業解釋
R數據分析:再寫潛在類別分析LCA的做法與解釋
R數據分析:如何繪制回歸分析結果的森林圖
R數據分析:傾向性評分匹配完整實例(R實現)
R數據分析:手把手教你畫列線圖(Nomogram)及解讀結果
R數據分析:混合效應模型的可視化解釋,再不懂就真沒辦法
R數據分析:廣義估計方程式GEE的做法和解釋
R數據分析:tableone包的詳細使用介紹
關鍵詞: 驗證性因子分析 什么數據適合因子分析
凡注有"環球傳媒網"或電頭為"環球傳媒網"的稿件,均為環球傳媒網獨家版權所有,未經許可不得轉載或鏡像;授權轉載必須注明來源為"環球傳媒網",并保留"環球傳媒網"的電頭。
資訊
- 元氣森林完成了對杏皮茶“最喜”的收購
- 御供俊元接任!索尼集團中國副總代表高橋洋已正式退休
- 火車票搜索量上漲1.5倍!通信行程卡取消“星號”標記
- 日產在美召回32萬多輛汽車 車型為2013年至2016年的322671輛Pathfinder SUV
- 高盛的內部預測顯示:今年的消費者業務損失將超過12億美元
- 虎牙被罰2萬元!多位主播跳舞現不雅動作
- ??松梨诩暗蹏鸵?9億加元出售XTO Energy Canada
- 恒生指數夜期(6月)收報22131點 跌240點或1.073%
- 讀書郎(02385)擬發行5200萬股股份 于2022年6月29日至2022年7月5日招股
- QQ賬號被盜?謹慎掃描二維碼 做好個人保護