tft每日頭條

 > 科技

 > 用r怎麼做線性回歸預測

用r怎麼做線性回歸預測

科技 更新时间:2024-07-04 21:25:00

今天将邏輯回歸和泊松回歸放一起給大家寫寫,因為它兩在R中的做法都非常的相似和非常的簡單,同時還有兩個回歸的圖形化表達。

什麼時候用邏輯回歸

Logistic regression, also known as logit regression, is what you use when your outcome variable (dependent variable) is dichotomous

就是如果你的因變量是二分類的時候就得考慮用邏輯回歸了,多分類也得用,所以你就記住因變量隻要是分類的,基本邏輯回歸跑不掉。

Rather than estimate beta sizes, the logistic regression estimates the probability of getting one of your two outcomes (i.e., the probability of voting vs. not voting) given a predictor/independent variable(s). For our purposes

傳統的回歸都會出來一個β值,解釋為當自變量改變一個單位時,因變量會改變β個單位,那麼在做邏輯回歸的時候也會有這個β值,但是意思卻大大不同,此時的β值為自變量改變一個單位時,logOR的改變量,怎麼解釋呢?就是說自變量改變一個單位陽性結果(通常編碼為1)的發生概率比陰性結果的發生概率會增加expβ倍。

什麼時候用泊松回歸

Poisson regression, also known as a log-linear model, is what you use when your outcome variable is a count (i.e., numeric, but not quite so wide in range as a continuous variable.)

當你的因變量是單位時間某事件的發生次數時你就應該考慮用泊松回歸,比如你想研究的因變量是過去一個月病人發生心梗的次數,你就考慮用泊松回歸。

實例展示

今天的例子為研究GRE,GPA和學校排名是否會影響一個人被錄取為研究生,在這個例子中GRE和GPA都是連續變量,學校排名rank為分類變量,是否錄取admit為(0/1)二分類

讀入數據(數據請私信獲取):

mydata <- read.csv('C:/Users/hrd/Desktop/bootcamp/dataset/binary.csv') head(mydata)

用r怎麼做線性回歸預測(邏輯斯蒂回歸與泊松回歸)1

那麼對于這麼一個數據集,我們就應該使用邏輯回歸模型,首先我們得告訴R我們的學校排名rank這個變量是分類變量,然後再拟合模型:

mydata$rank <- factor(mydata$rank) mylogit <- glm(admit ~ gre gpa rank, data = mydata, family = "binomial") summary(mylogit)

用r怎麼做線性回歸預測(邏輯斯蒂回歸與泊松回歸)2

從上面的結果看出:

  • 結果中首先會提示你跑的什麼模型
  • 然後我們會看到deviance residuals,這個和線性回歸的殘差一個意思,是表示模型好壞的一個指标
  • 然後就是各個預測變量的系數和标準誤,z統計量和p值,我們可以看到gpa,gre和rank都有顯著意義,系數的解釋就是預測變量每增加一個單位,LogOR的改變量,比如對于gre就有學生的gre每增加一個單位,那麼它被錄取為研究生的概率增加exp0.002倍。

默認輸出的這個結果其實是不直觀的,我們可以通過下面的代碼直接輸出OR改變量和置信區間

exp(cbind(OR = coef(mylogit), confint(mylogit)))

用r怎麼做線性回歸預測(邏輯斯蒂回歸與泊松回歸)3

這樣解釋起來就會直觀很多。

那麼模型建立好了之後,我們還可以使用該模型做預測,比如我們想看看不同學校排名是如何預測了學生是否能上研究生:

newdata1 <- with(mydata, data.frame(gre = mean(gre), gpa = mean(gpa), rank = factor(1:4))) newdata1$rankP <- predict(mylogit, newdata = newdata1, type = "response") newdata1

用r怎麼做線性回歸預測(邏輯斯蒂回歸與泊松回歸)4

在上面的代碼中我們将gpa和gre都固定為均值,隻改變學校排名,然後我們得到的結果就是排名為1的學校的學生能上研究生的概率為0.517,排名為2,3,4的學校的學生能上研究生的概率分别為0.352,0.219,0.185。

我們還可以将不同的gre或者gpa與能否上研究生的關系以學校排名分組畫出來,比如我們想畫gre與能否上研究生的概率,此時我們需要有很多的gre分數:

newdata2 <- with(mydata, data.frame(gre = rep(seq(from = 200, to = 800, length.out = 100), 4), gpa = mean(gpa), rank = factor(rep(1:4, each = 100))))

上面的代碼就給不同排名的學校都生成了一百個200到800的gre分數,同時依然固定gpa

此時我們的newdata2就隻有3個預測變量gre,gpa,和rank,我們用之前訓練的模型來給這個數據做預測,生成newdata3:

newdata3 <- cbind(newdata2, predict(mylogit, newdata = newdata2, type = "link", se = TRUE))

此時這個newdata3就包含一個fit列以及fit的标準誤,fit就是logOdds,如下圖:

用r怎麼做線性回歸預測(邏輯斯蒂回歸與泊松回歸)5

因為我們需要的是概率,所以我們需要将fit轉化為預測概率,下面的代碼就可以實現概率和概率的置信區間計算:

newdata3 <- within(newdata3, { PredictedProb <- plogis(fit) LL <- plogis(fit - (1.96 * se.fit)) UL <- plogis(fit (1.96 * se.fit)) })

此時再看我們的newdata3,裡面就有我們的預測概率和置信區間了:

用r怎麼做線性回歸預測(邏輯斯蒂回歸與泊松回歸)6

我們現在就可以以rank這個變量分組,畫出gre和預測概率的關系:

ggplot(newdata3, aes(x = gre, y = PredictedProb)) geom_ribbon(aes(ymin = LL, ymax = UL, fill = rank), alpha = 0.2) geom_line(aes(colour = rank), size = 1)

用r怎麼做線性回歸預測(邏輯斯蒂回歸與泊松回歸)7

到這兒這篇文章的邏輯回歸就寫完了,在具體分析的時候如果我們要用泊松回歸,我們隻需要将拟合模型時的family 參數修改為family=poisson就行,其餘都完全一樣。

那麼對于本文中的例子來說,如果我們不是模拟的數據集,如果我們的newdata3中還有實際的admit這個變量,我們就可以進一步的做出真陽性率和假陽性率,進而畫出ROC曲線。具體的操作之前文章應該有寫的,有興趣的可以翻看。

小結

今天給大家寫了一個邏輯回歸的例子,并對模型的輸出和結果解釋做了說明,希望對大家有幫助,很多人愛做預測模型,其實本文就是一個很好的例子。感謝大家耐心看完,也歡迎大家的意見和建議。

如果你是一個大學本科生或研究生,如果你正在因為你的統計作業、數據分析、論文、報告、考試等發愁,如果你在使用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數據分析:ROC曲線與模型評價實例

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved