R語言 | 回歸分析(四)

2021-02-10 奈提柯斯先生

學習參考

Discovering Statistics Using R

Statistics for Linguistics with R

How to Do Linguistics with R

R in Action

Analyzing Linguistic Data

R Graphics Cookbook

··· ···

當預測變量是分類型變量時,需要設置虛擬變量以便進行線性回歸的擬合。

邏輯回歸中,預測變量可以是連續型變量或分類變量,得到的結果是分類變量。根據結果的分類個數,邏輯回歸可以被分為二元邏輯回歸和多元邏輯回歸。glm( )是邏輯回歸所用函數。

為了將非線性的結果轉變為線性內容,我們可以採用優勢比進行轉化。

R: The R Project for Statistical Computing

https://www.r-project.org/

RStudio:

https://rstudio.com/

今天是我們最後一期R語言入門系列。從去年11月份到今天,中間也因學業停更了很久,好在堅持了下來。如果您跟著我們一步步走完了整個流程,那麼恭喜你成功入門!之後我們還會不定期更新與R有關的內容,比如更豐富的數據可視化,其他統計分析研究相關的內容(如貝葉斯分析)等等。現在開始我們接受R語言相關操作的稿件,如果你有什麼想分享的內容,歡迎來稿!

在語言學的研究中,我們的數據總是互相嵌套,層層遞進的。比如,我想考察漢語普通話否定句中否定焦點的位置,那麼根據調查,我會考慮影響否定焦點位置的因素。首先,不同否定詞是否會對否定焦點有影響,那麼我設置了「不」字和「沒」字(第一層)。接著,我又考慮有無語句焦點是否對否定焦點身份有影響,那麼我設置了帶焦點的語句和不帶焦點的語句(第二層)。後來,我又考慮否定焦點會不會因為不同的語句焦點位置而發生轉移,於是又設置了不同位置的焦點(第三層)。

另外,與其他眾多語言學實驗類似,這個實驗同樣是組內設計(within-subjects design),即同一批被試接受不同的處理條件。如何更方便地考慮到所有因素,並進行統計檢驗呢?我們採用的分析方法叫做線性混合效應模型(linear mixed effects model,簡稱LME),它本質上是一種多水平模型(multilevel model)。在這個模型中,我們把所有的自變量分為了兩種類型:固定效應(fixed effects)和隨機效應(random effects)。

fixed effects和random effects下的回歸

通俗地講,固定效應指的是實驗中所關注的變量,比如上面例子中我們所感興趣的否定詞、焦點、焦點位置這三個因素都出現在實驗中,那麼這些就被稱為固定效應,即實驗中你所控制的自變量。隨機效應指的是實驗中那些由於從總體中採樣而產生的隨機誤差變量,比如實驗被試,這可以被稱作隨機效應。你或許在一些教材中看到,如果我提到的否定詞、焦點、焦點位置三個因素,只是一系列造成否定焦點不同的因素中的三個,那麼這些也被稱為隨機效應。對於這一點我們可以忽略,因為在絕大多數的學術研究中,我們控制的自變量就是固定效應。

我們回顧一下線性回歸的確定方法,它的公式是Yi = b0+ b1Xi+ εi,其中的i我們說代表的是不同的被試。在這樣的簡單回歸模型中,截距和斜率是固定的,即默認回歸模型對所有被試都適用。但是我們也可以將它們設定為隨機值,即截距和斜率可能會因隨機參數發生變化,這樣就會有「隨機截距、隨機斜率、截距和斜率都是隨機」三種情況。在研究中最常見的是第三種,即因隨機參數而形成的不同線性歸回。比如,隨機參數是被試個體,那每個人發音得來的音高肯定會有所不同。

現在,我們得到了固定效應和隨機效應,那麼接下來就是定義LME的數學表達。根據線性回歸的表達式,b0 代表著截距,b1代表著斜率,εi代表著隨機誤差。加入隨機效應後,截距和斜率都有一個隨機參數參與進去,比如記作u,LME會根據隨機參數給每一個水平擬合一個適合的模型,比如給第一個水平的斜率和截距添加隨機參數,那麼表達式就成為:Yij = (b0j + u0j) + (b1 + u1j)X1 + b2X2 +… + bnXn + εi。以此類推。看到公式不要緊張,這些在R中都自動運行,這裡只是幫你理解。

最後,我們談一談LME中的εi。由於隨機效應的影響,我們的誤差也被分為了兩部分。一部分是隨機誤差(random error),它是受到我們可以解釋的隨機參數的影響(比如不同的被試),一部分是殘差誤差(residual error),它在模型的解釋範圍外。接下來,我們介紹LME的R實現方式。

到目前為止,我們介紹到的內容都是線性回歸分析的方法。對於語音學研究而言,比如F0的走勢往往不是線性的。換句話說,F0走勢與時間組成的函數關係不是一次函數,因此單純使用線性回歸來分析基頻曲線就顯得稍有不足,擬合程度比較差。另外,之前我們也提到過,如果使用傳統的t檢驗或方差分析,它們都是點對點的比較,這就很容易出現F0採樣的幾個點中,個別點出現了顯著性差異,個別點沒有,造成結果難以解讀。如何既避免傳統檢驗帶來的問題,又可以使用類似於線性回歸的方法?這就是我們要介紹的增長曲線分析(Growth Curve Analysis,簡稱GCA)

在開始之前,我們首先對GCA的定義和適用範圍進行介紹。GCA本質上也是多水平回歸(multilevel regression)的分析方法,分析非線性數據效果極佳,尤其是那些時序數據(time course data)或縱向數據(longitudinal data)。F0就是一個典型的可以藉助GCA進行分析的數據,首先它是非線性變化,其次隨著時間歷程而發生變動,還有其他行為實驗數據,如眼動、EEG等。GCA的主要優點在於,它可以同時分析不同實驗變量之間以及個體之間的差異。GCA與其他多水平回歸一樣,需要確定固定效應和隨機效應。

因為GCA可以用來分析非線性數據,那麼很顯而易見地,在GCA中除了固定效應和隨機效應,還需要了解到要分析數據的形狀,即要保證擬合出來的模型的函數圖像,要較好地擬合數據的趨勢。GCA模型使用高階多項式進行擬合,通俗地說,它使用的不再是一個簡單的Yi = b0+ b1Xi+ εi,而是根據曲線的走勢添加高階項。比如使用GCA擬合漢語上聲調,它是一個類似於拋物線的二次函數,那麼GCA就會添加一個二階項,成為Yij = b0i+ b1iTimej+ b2iTimej2+ εij,其中的i和j分別表示第i個被試在時間j上的數值。如果是個雙摺調,那麼我們只需再添加三階項即可。通俗地講,它實際上就是我們數學中的二次、三次、四次...n次函數。

如何確定我需要的高階項,這個需要考慮很多方面。我們建議在使用GCA進行分析的過程中,首先從最基本的簡單線性回歸做起(為什麼這麼講,後面的R實現會提及),然後一點點添加實驗中控制和觀察的變量/效應。在語言研究中,我們一般不提倡超過四階項。在確定之後,檢查模型的擬合情況,選擇最優模型即可。

在前兩節提到的LME和GCA,它們本質都是多水平回歸,因此在實現方面,我們以較複雜的GCA為主進行實例講解,LME以假設實驗為主,二者使用的函數均為lme4包中的lmer( )函數。

首先解讀LME的實現方式。假設某實驗測定了變量A(數據中記作Condition)對閱讀時長RT的影響,那麼根據LME的概念,這裡的Contion即為固定效應,因此記作RT ~ Condition。下面我們考慮進隨機效應,比如實驗中被試(Subjects)和實驗條目(Item),在lmer( )函數中使用「|」將隨機效應進行區分。因此,我們LME可以這樣寫。

library(lme4)ReadingTime <- lmer(RT ~ Condition + (1 | Subjects) + (1 | Item) + (0+Condition | Subjects)

其中(1 | Subjects)和(1 | Item)表示我們按Subjects和Item添加隨機截距,(0+Condition | Subjects)表示為了考慮不同Subjects對Condition的反饋方式可能有所不同,因此按照Subjects給每一個預測變量Condition添加一個隨機斜率。總體而言,在LME中,如果添加隨機截距,那麼是(1 | random effects);如果添加隨機斜率,那麼是(0 + fixed effects | random effects)。

對於GCA分析,為了方便練習,我們使用Mirman(2008)的數據,點擊閱讀原文可以跳轉至相關網頁,最下方提供下載。下面我們把所有代碼展示出來,然後逐一講解。

library(ggplot2)library(reshape2)library(Matrix)library(lme4)

wd <- read.table(file.choose(), header=T)wd$Subject <- as.factor(wd$Subject)t <- poly(unique(wd$Block), 2)wd[, paste("ot", 1:2, sep="")] <- t[wd$Block, 1:2]m.base <- lmer(Accuracy ~ (ot1+ot2) + (ot1+ot2 | Subject), data=wd, REML=FALSE)m.0 <- lmer(Accuracy ~ (ot1+ot2) + TP + (ot1+ot2 | Subject), data=wd, REML=FALSE)m.1 <- lmer(Accuracy ~ (ot1+ot2) + TP + ot1:TP + (ot1+ot2 | Subject), data=wd, REML=FALSE)m.2 <- lmer(Accuracy ~ (ot1+ot2)*TP + (ot1+ot2 | Subject), data=wd, REML=FALSE)

anova(m.base, m.0, m.1, m.2)

coefs=data.frame(coef(summary(m.2)))
coefs$p <- 2 * (1 - pnorm(abs(coefs$t.value)))coefs

首先,你遇到的第一個「不明所以」的語句是poly( )函數,這一句意思是在block範圍下創建一個二階多項式。換一個例子,比如,我們分析上聲調,那麼就是在上聲調的完整時間範圍內創建二階多項式。通俗地講,它就像是定義函數的定義域。但是僅僅定義了還不足夠,我們的目的是進行數據分析,二階多項式的值必須要與要檢驗的數據關聯。因此,下一句就是進行連接。如何讓數據明白誰對應誰呢?我們創建了"ot"這個變量(我用orthogonal time的縮寫代表,當然你也可以創建名為「a」的變量),因為是二階多項式,因此我們的ot變量也應當是2。再觀察調整後的數據,可以看到我們已經創建好所需要的內容了。

接下來就是進行建模分析,因為我們考察的是在Block這個時序上Accuracy的變化情況,因此在lmer( )函數中的開頭要聲明Accuracy是隨Block變化的,又因為我們已經設定好相關的ot變量,這些ot變量控制著Accuracy隨Block的走勢,因此記作Accuracy ~ (ot1+ot2)。其實從本質上看,它的建模方式與任何其他回歸分析的建模方式並不較大的不同。需要額外提醒的是,除了我們之前見到的➕表示更多的預測變量,:表示交互效應,這裡出現了*代表的是TP這個預測變量在所有時間上的影響。最後通過anova( )函數選擇最優模型。

在選擇最優模型的時候,我們要同時考慮logLik和p值,後者毋庸置疑是看那個模型與null model相比具有顯著性差異,側面說明因素是否對因變量有影響。logLik是對數似然比值(log-likelihood ratio),檢測擬合優度,這個數值越大說明擬合越好。綜合這兩方面來看,m.2的擬合最優,因此我們輸出這個函數中的係數。最後三步則是取出模型中t值相對應的p值,獲得觀測值的概率。

其中前三行是參考變量(reference),默認情況下參考的是你變量設置中的第一個,比如該數據中TP的第一個變量是High,因此它被設置為了參考變量。緊隨其後的TPLow是它的擬合回歸模型與High的比較結果,接著的ot1和ot2代表的是斜率和曲度,同樣是與High進行對比的結果。

LME和GCA的研究方法在語言學研究中用途越來越廣,也是近幾年被廣泛運用的方法。一開始對於回歸分析可能會覺得有些難度,但是隨著不斷練習,你也可以更好地使用R為你的數據分析服務。

*本節GCA分析參考Mirman (2014) Growth Curve Analysis and Visualization Using R

相關焦點

  • R語言和Python實現回歸分析
    r的取值範圍是[-1,1],r=1表示完全正相關!r=-1表示完全負相關!r=0表示完全不相關。為什麼要對相關係數進行顯著性檢驗?一元回歸不存在多重共線性的問題;而多元線性回歸要摒棄多重共線性的影響;所以要先對所有的變量進行相關係數分析,初步判定是否滿足前提---多重共線性時間序列數據會自發呈現完全共線性問題,所以我們用自回歸分析方法;出現多重共線性如何改善:1. 刪除變量對去除多重共線性最為顯著。2.
  • R語言 | 回歸分析(一)
    這種分析思路,即所謂的回歸分析(regression analysis)。回歸分析是根據一個或多個預測變量來「預測」結果變量的方法。換句話說,我們可以理解為通過得到的樣本中的自變量和因變量關係,來預測結果的方法。
  • R語言從入門到精通:Day12--R語言統計--回歸分析
    回歸作為一個廣義的概念,涵蓋了許多變種,R語言中也為其提供了強大而豐富的函數和選項(但顯然選項越多,對初學者越不友好),早在2005年,R中就有200多種關於回歸分析的函數 (https://cran.r-project.org/doc/contrib/Ricci-refcard-regression.pdf,這個文檔提供了部分回歸分析函數列表,供大家參考)。
  • R語言從入門到精通:Day13-R語言回歸分析
    廣義線性模型就包含了非正態因變量的分析,本次教程的主要內容就是關於廣義線性模型中流行的模型:Logistic回歸(因變量為類別型)和泊松回歸(因變量為計數型)。開始本次的教程之前,同樣的,我們默認大家已經了解了廣義線性模型的統計學理論背景,直接進入R語言的函數學習。
  • 對比R語言和Python,教你實現回歸分析
    r的取值範圍是[-1,1],r=1表示完全正相關!r=-1表示完全負相關!r=0表示完全不相關。為什麼要對相關係數進行顯著性檢驗?一元回歸不存在多重共線性的問題;而多元線性回歸要摒棄多重共線性的影響;所以要先對所有的變量進行相關係數分析,初步判定是否滿足前提---多重共線性時間序列數據會自發呈現完全共線性問題,所以我們用自回歸分析方法;出現多重共線性如何改善:1. 刪除變量對去除多重共線性最為顯著。2.
  • 一元(多元)線性回歸分析之R語言實現
    上篇介紹了《一元(多元)線性回歸分析之Excel實現》,本篇來探討一下回歸分析在R語言中的實現,我們將從更專業的角度對模型進行一些解讀。
  • R語言邏輯回歸分析
    如何進行邏輯回歸分析邏輯回歸是當y=f(x),而y為分類變量的時候的邏輯曲線擬合的方法。
  • 利用R語言進行logistic回歸分析 | 30 天學會R DAY 26
    第26 天 利用R語言進行logistic回歸分析Logistic回歸是醫學研究甚至是很多社會學研究常見的一種回歸方法,它主要針對結局變量為二分類或者多分類的數據
  • R語言實戰:回歸
    本文內容來自《R 語言實戰》(R in Action, 2nd),有部分修改回歸的多面性簡單線性多項式
  • 基於R語言的主成分和因子分析
    >)3)提取主成分4)主成分旋轉,當提取多個主成分時,對它們進行旋轉可使結果更具解釋性5)解釋結果6)計算主成分得分應用主成分分析使用psych包中的principal()函數,以下是該函數中參數的解釋:principal(r, nfactors
  • R語言實戰(14)——主成分分析和因子分析
    基本圖形R語言實戰(7)——基本統計分析R語言實戰(8)——回歸R語言實戰(9)——方差分析R語言實戰(10)——功效分析R語言實戰(11)——中級繪圖R語言實戰(12)——重抽樣與自助法R語言實戰(13)——廣義線性模型本期是我們推出
  • R語言 | 一個多元線性回歸在R中的實現示例
    從技術上來說,簡單多項式回歸也可以視為多元線性回歸的特例,例如二次回歸有兩個預測變量(X1=X和X2=X2),三次回歸有三個預測變量(X1=X、X2=X2和X3=X3)。 本篇繼續通過一個示例,展示在R語言中擬合多元線性回歸的方法過程。
  • 用R語言進行分位數回歸(Quantile Regression)
    本文根據文獻資料整理,以介紹方法為主要目的。作者的主要貢獻有:(1)整理了分位數回歸的一些基本原理和方法;(2)歸納了用R語言處理分位數回歸的程序,其中寫了兩個函數整合估計結果;(3)使用一個數據集進行案例分析,完整地展現了分析過程。
  • R語言|1.回歸模型:P for trend是什麼?
    題記:本文主要介紹二元Logistic中,採用R語言實現趨勢性分析:P for trend。目錄背景知識P for trend是線性趨勢檢驗的P值,用於反映自變量x(數值型變量)與Y是否存在線性趨勢關係。
  • R 語言文本分析|情感分析
    收錄於話題 #R 語言文本分析>tidytext包內置了三個常用的英文情感詞典,分別是:Finn Årup Nielsen 的 AFINN 詞典Saif Mohammad 和 Peter Turney 的 nrc 詞典常用的中文詞典包括:附件中已經涵蓋了這三個詞典,同學們使用時請自取。
  • 一文了解R語言數據分析 ----主成分分析
    •  主成分分析,嶺回歸,偏最小二乘回歸。在本文檔中,我們將藉助示例討論主成分分析。二、主成分分析詳解PCA也稱為特徵縮減或特徵提取PCA使用數據集中已存在的許多功能創建新功能。在PCA中,不是直接在解釋變量上回歸因變量,而是將解釋變量的主成分用作回歸量。人們通常只使用所有主成分的子集進行回歸,從而使PCR成為一種正則化程序。
  • 醫學統計與R語言:Tobit回歸模型
    醫學統計與R語言:多重比較P值的可視化醫學統計與R語言:爬蟲抓取國自然基金信息醫學統計與R語言:多元方差分析與非參數多元方差分析醫學統計與R語言:使用R語言實現Johnson-Neyman分析醫學統計與R語言:多層線性模型圖示醫學統計與R語言:多層線性模型(混合線性模型醫學統計與R語言:best
  • 【獨家】手把手教線性回歸分析(附R語言實例)
    回歸方法也可用於假設檢驗,其中包括數據是否能夠表明原假設更可能是真還是假。回歸模型對關係強度和一致性的估計提供了信息用於評估結果是否是由於偶然性造成的。回歸分析是大量方法的一個綜合體,幾乎可以應用於所有的機器學習任務。如果被限制只能選擇單一的分析方法,那麼回歸方法將是一個不錯的選擇。
  • r語言一元回歸模型專題及常見問題 - CSDN
    如果我們要研究這些事件,找到不同變量之間的關係,我們就會用到回歸分析。一元線性回歸分析是處理兩個變量之間關係的最簡單模型,是兩個變量之間的線性相關關係。讓我們一起發現生活中的規律吧。由於本文為非統計的專業文章,所以當出現與教課書不符的描述,請以教課書為準。本文力求用簡化的語言,來介紹一元線性回歸的知識,同時配合R語言的實現。
  • R語言在醫學統計中的應用-基礎教程
    歡迎關注小號:醫學統計數據分析,今天我們來介紹一下醫學統計學中常用統計學方法的R語言基本操作。       R是用於統計分析、繪圖的語言和操作環境。R是屬於GNU系統的一個自由、免費、原始碼開放的軟體,它是一個用於統計計算和統計製圖的優秀工具。