r語言相關(guān)性分析步驟(r語言線性相關(guān)圖)
之前給大家寫過一篇數(shù)據(jù)清洗的文章,解決的問題是你拿到原始數(shù)據(jù)后如何快速地對數(shù)據(jù)進行處理,處理到你基本上可以拿來分析的地步,其中介紹了如何選變量如何篩選個案,變量重新編碼,如何去重,如何替換缺失值,如何計算變量等等——R數(shù)據(jù)分析:數(shù)據(jù)清洗的思路和核心函數(shù)介紹
今天呢,就更進一步,對于一個處理好的數(shù)據(jù),我們就可以進行統(tǒng)計分析了,本文的思路就是對照期刊論文的一般流程寫寫如何快速的實現(xiàn)一篇論文的統(tǒng)計過程并簡潔高效地展示結(jié)果。依然提醒大家,請先收藏本文再往下讀哈。
先做描述統(tǒng)計
基本上文章結(jié)果部分一上來首先展示的就是描述統(tǒng)計,就是你有多少樣本,樣本特征是啥樣的—-連續(xù)變量的均值標(biāo)準(zhǔn)差是多少,分類變量的頻數(shù)百分比是多少等等,這些都是描述統(tǒng)計
做法1:
比如我現(xiàn)在拿到手的處理好的數(shù)據(jù)是這樣:

圖1
比如我想看看男女之間它們每個變量的均值是多少,我就可以寫出如下代碼:
data %>%
group_by(gend.f) %>%
summarize(mean_figures=mean(figures),
mean_cards=mean(cards),
mean_words=mean(wordlist))
運行之后可以看到輸出中就按照性別輸出了三個變量的均值。

如果我們想要描述的變量很多,可以用summarize_at函數(shù)進一步簡化代碼如下:
data %>%
group_by(gend.f) %>%
summarize_at(vars("figures","cards","wordlist"), mean)
運行后得到結(jié)果如下:

上面是均值的例子,其余的比如標(biāo)準(zhǔn)差只需要將mean函數(shù)一換就可以。
方法2:
方法1感覺還是有點呆哈,給大家介紹方法2:我們還可以直接用psych包中的describe函數(shù)也可以得到連續(xù)變量常用的描述統(tǒng)計量,比如運行下面的代碼:
describe(data, fast = T)
就可以得到數(shù)據(jù)的描述統(tǒng)計,包括個數(shù),均值,標(biāo)準(zhǔn)差,極值極差標(biāo)準(zhǔn)誤,比方法1要方便一丟丟的:

如果將fast參數(shù)去掉,則偏度峰度,中位數(shù)等等也會出現(xiàn):

以上兩種方法都是針對連續(xù)變量的部分處理方法,適用性沒有那么好,再接著看下面的做法
做法3:使用tableone包
做描述統(tǒng)計第三個方法就是用tableone包,依然是對于圖1中的數(shù)據(jù),我現(xiàn)在想做一個描述統(tǒng)計,連續(xù)變量用均值±標(biāo)準(zhǔn)差,分類變量用頻數(shù)百分比表示,我就可以寫出如下代碼:
(tab_nhanes <- CreateTableOne(data = data))
運行后得到如下描述統(tǒng)計結(jié)果:

可以看到,sex變量是用頻數(shù)百分比進行描述的,其余的連續(xù)變量都是以均值標(biāo)準(zhǔn)差呈現(xiàn)的。
在使用tableone包的時候如果你通過正態(tài)性檢驗發(fā)現(xiàn)某個變量不是正態(tài)分布的,這個時候需要用中位數(shù)和四分位數(shù)間距進行描述,此時在打印tableone對象的時候加上nonnormal = "變量名"參數(shù)就好了,比如我現(xiàn)在知道我的數(shù)據(jù)中年齡是不服從正態(tài)分布的,我就可以寫出如下代碼:
print(tab_nhanes,
showAllLevels = TRUE,
nonnormal = "Age"
)
大家肯定見過這樣的表格展示的描述統(tǒng)計,就是分組描述統(tǒng)計:

比如干預(yù)實驗中對照組和干預(yù)組的特征比較,兩組隨訪數(shù)據(jù)的基線特征比較等等。
這樣的表格用tableone也是非常容易實現(xiàn)的,比如我的原始數(shù)據(jù)長這樣:

圖2
我現(xiàn)在想以Gender這個變量進行分組描述統(tǒng)計,我便可以寫出如下代碼:
strata <- CreateTableOne(data = data,
vars = c("Age", "Race", "Education"),
factorVars = c("Race","Education"),
strata = "Gender"
)
print(strata,
nonnormal = "Age",
cramVars = "Gender")
上面的代碼中,strata參數(shù)設(shè)置分組變量,factorVars指定變量類型為因子,vars參數(shù)指定我們要進行統(tǒng)計描述的變量,運行后出來的結(jié)果如下:

可以看到既有所有變量的統(tǒng)計描述還有組間比較的p值,另外我們可以很方便地通過以下代碼將做出來的tableone輸出成csv:
tab_csv <- print(strata,
nonnormal = "Age",
printToggle = FALSE)
write.csv(tab_csv, file = "Summary.csv")
運行后即可在目錄中找到相應(yīng)的csv文件,然后直接復(fù)制粘貼到論文中。

圖3
方法4:gtsummary
最后要給大家介紹的方法就是使用gtsummary中的tbl_summary函數(shù),比如依然是上面的數(shù)據(jù)(圖1中的數(shù)據(jù)),我使用gtsummary函數(shù)寫出代碼如下:
data %>% tbl_summary(
by=Gender,statistic = all_continuous() ~ "{mean} ({sd})",
) %>% add_p() %>% modify_caption("**Table 1. Please follow Wechat Channel--Codewar**")
可以看到,代碼基本就1行,add_p是添加分組比較的p值(按需使用),modify_caption是更改表的標(biāo)題,運行上面的代碼,即可得到又一張出版級的表格如下(內(nèi)容和圖3也是一樣的):

圖3
真棒!這個表格也可以通過write.csv輸出為excel然后直接貼到你的論文中。
再做相關(guān)分析
描述統(tǒng)計做完了之后我們有可能會需要做一下各個變量間的兩兩相關(guān),期刊中常見的比較標(biāo)準(zhǔn)的相關(guān)結(jié)果表示方法如下,變量均值和標(biāo)準(zhǔn)差占兩列,然后相關(guān)矩陣放后面:

這樣的表格也有十分簡單的做法,大家可以直接使用mlmCorrs這個包,比如對于圖1中的數(shù)據(jù),我想拉一個和上圖一樣布局的結(jié)果表格,我只需要直接運行下面的代碼:
data %>%
select(wordlist:occupats) %>%
mlmCorrs::corstars()
便可以得到結(jié)果如下,真的是很方便呀:

其實在R語言中拉相關(guān)的方法很多,但是就是這個好用,最好用。其它的還有g(shù)gpairs,還有corrr::correlate()還有Hmisc::rcorr都可以,有興趣的同學(xué)可以自己取探索一番!
再做主分析
變量間的相關(guān)關(guān)系做完之后,大家要做多因素分析了,比如你要做個多元線性回歸,比如你要做個邏輯斯蒂回歸,或者做個生存分析,這些分析是你論文中最重要的部分,也是你的主要研究結(jié)論的體現(xiàn)。
這兒也給大家展示幾個例子,首先寫個簡單的多元線性回歸,其余的直接改相應(yīng)的主分析函數(shù)就行。
方法1:tab_model
依然是圖1中的數(shù)據(jù),我現(xiàn)在隨意跑了兩個線性回歸模型,代碼如下:
model1 <- lm(cards ~ wordlist, data=data_txt)
model2 <- lm(cards ~ figures, data=data_txt)
我想要展示模型的信息,只需要運行下面的代碼就可以:
sjPlot::tab_model(model1, model2)
得到的結(jié)果:

可以看到兩個線性回歸模型的結(jié)果被并列地展示出來了,結(jié)果還是挺好的,這里用到的tab_model當(dāng)然不止可以可以用到普通的線性回歸中,像廣義線性模型和混合模型都是可以的。
方法2:gtsummary
剛剛寫了線性回歸的例子,再給大家看看logistics回歸和cox回歸的模型展示,我先用同一批數(shù)據(jù)擬合一個logistics模型和一個cox模型:
glm(response ~ trt + age + grade, trial, family = binomial) %>%
tbl_regression(exponentiate = TRUE)
coxph(Surv(ttdeath, death) ~ trt + grade + age, trial) %>%
tbl_regression(exponentiate = TRUE)
logistics模型的結(jié)果輸出如下:

cox模型的結(jié)果如下:

此時我可以用tbl_merge函數(shù)將兩個模型合并起來展示(這也是多個模型時的常規(guī)展示方法),代碼如下:
tbl_merge_ex1 <-
tbl_merge(
tbls = list(t1, t2),
tab_spanner = c("**Tumor Response**", "**Time to Death**")
) %>% modify_caption("**關(guān)注公眾號喲-Please follow Wechat Channel--Codewar**")
運行后輸出結(jié)果如下:

可以看到,同樣的變量,跑了兩個不同的模型,依然可以通過tbl_merge恰當(dāng)?shù)睾喜⒄故境鰜?,很清晰,?dāng)然論文中肯定不會這么用,一般都是模型變量依次添加從而形成幾個模型并排展示,這樣的情況用tbl_merge也是可以的,可以動手試試哈。
小結(jié)
今天以假設(shè)的數(shù)據(jù)分析的流程為線,寫了常規(guī)流程中的描述統(tǒng)計,相關(guān),回歸的做法,重點在如何快速地呈現(xiàn)出版級的結(jié)果,因為涉及的比較多,寫的例子就比較淺顯了,不過這里面提到的每一個包都值得大家細細探索。
感謝大家耐心看完,自己的文章都寫的很細,重要代碼都在原文中,希望大家都可以自己做一做,請轉(zhuǎn)發(fā)本文到朋友圈后私信回復(fù)“數(shù)據(jù)鏈接”獲取所有數(shù)據(jù)和本人收集的學(xué)習(xí)資料。如果對您有用請先記得收藏,再點贊分享。
也歡迎大家的意見和建議,大家想了解什么統(tǒng)計方法都可以在文章下留言,說不定我看見了就會給你寫教程哦,有疑問歡迎私信,有合作意向請直接滴滴我。
如果你是一個大學(xué)本科生或研究生,如果你正在因為你的統(tǒng)計作業(yè)、數(shù)據(jù)分析、模型構(gòu)建,科研統(tǒng)計設(shè)計等發(fā)愁,如果你在使用SPSS, R,Python,Mplus, Excel中遇到任何問題,都可以聯(lián)系我。因為我可以給您提供最好的,最詳細和耐心的數(shù)據(jù)分析服務(wù)。
如果你對Z檢驗,t檢驗,方差分析,多元方差分析,回歸,卡方檢驗,相關(guān),多水平模型,結(jié)構(gòu)方程模型,中介調(diào)節(jié),量表信效度等等統(tǒng)計技巧有任何問題,請私信我,獲取詳細和耐心的指導(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語言:利用caret的dummyVars函數(shù)設(shè)置虛擬變量
R數(shù)據(jù)分析:什么是人群歸因分數(shù)Population Attributable Fraction
R數(shù)據(jù)分析:如何用R做驗證性因子分析及畫圖,實例操練
R數(shù)據(jù)分析:有調(diào)節(jié)的中介
R數(shù)據(jù)分析:手把手教你畫列線圖(Nomogram)及解讀結(jié)果
R數(shù)據(jù)分析:傾向性評分匹配完整實例(R實現(xiàn))
R數(shù)據(jù)分析:樣本量計算的底層邏輯與實操,pwr包
R數(shù)據(jù)分析:臨床預(yù)測模型的樣本量探討及R實現(xiàn)
R數(shù)據(jù)分析:變量間的非線性關(guān)系,多項式,樣條回歸和可加模型
R數(shù)據(jù)分析:PLS結(jié)構(gòu)方程模型介紹,論文報告方法和實際操作
R數(shù)據(jù)分析:二分類因變量的混合效應(yīng),多水平logistics模型介紹
R數(shù)據(jù)分析:如何做數(shù)據(jù)的非線性關(guān)系,多項式回歸的做法和解釋
R數(shù)據(jù)分析:跟隨top期刊手把手教你做一個臨床預(yù)測模型
Mplus數(shù)據(jù)分析:性別差異gendergap的相關(guān)研究如何做?
R數(shù)據(jù)分析:50人中至少兩人相同生日的概率有多大?模擬給你看
R數(shù)據(jù)分析:嵌套數(shù)據(jù)分析為什么要用加隨機效應(yīng)?終于解釋清楚了
R數(shù)據(jù)分析:Lasso回歸篩選變量構(gòu)建Cox模型并繪制列線圖
R數(shù)據(jù)分析:潛變量與降維方法(主成分分析與因子分析)
R數(shù)據(jù)分析:如何用lavaan包做結(jié)構(gòu)方程模型,實例解析
R機器學(xué)習(xí):分類算法之K最鄰進算法(KNN)的原理與實現(xiàn)
R數(shù)據(jù)分析:縱向分類結(jié)局的分析-馬爾可夫多態(tài)模型的理解與實操
R數(shù)據(jù)分析:孟德爾隨機化分析文獻解析和實例操練
R機器學(xué)習(xí):分類算法之logistics回歸分類器的原理和實現(xiàn)

如若轉(zhuǎn)載,請注明出處:http://www.qjsdgw.cn/39141.html