R语言 - 逻辑回归
生活随笔
收集整理的這篇文章主要介紹了
R语言 - 逻辑回归
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
> library(ggplot2)
#設置隨機種子為1> set.seed(1)
#將整數1,2,3分別定義為變量b0,b1,b2> b0 <- 1 ; b1 <- 2 ; b2 <- 3
#產生1000個服從正態分布的隨機數分別定義為變量x1,x2> x1 <- rnorm(1000) ; x2 <- rnorm(1000)
#將以上產生的b0,b1,b2,x1,x2計算定義為浮點數變量z> z <- b0 + b1*x1 + b2*x2
#將z帶入邏輯回歸計算函數,定義為變量pr> pr <- 1/(1+exp(-z))
#使用模擬產生二項分布數據函數rbinom,定義樣本容量為1000,點分布的試驗次數為1,點分布成功概率為pr “0<pr<1”> y <- rbinom(1000,1,pr)
#將x1,x2,y=factor(y)定義為數據幀變量plotdata> plotdata <- data.frame(x1,x2,y=factor(y))
#觀察plotdata2全貌> summary(plotdata)
#將數據幀plotdata2作可視化,定義為變量p> p <- ggplot(data=plotdata,aes(x=x1,y=x2,color=y))+geom_point()> p
#將變量x1,x2,y組成數據幀帶入變量data> data <- data.frame(x1,x2,y)
#用邏輯回歸函數glm()將數據幀data進行邏輯回歸分析,分析結果定義為變量model> model <- glm(y~.,data=data,family = "binomial")
#觀察分析結果model全貌> summary(model)
Call:glm(formula = y ~ ., family = "binomial", data = data)
Deviance Residuals: Min 1Q Median 3Q Max -2.78286 -0.38847 0.08272 0.44502 2.36265
Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) 0.9613 0.1128 8.524 <2e-16 ***x1 1.7954 0.1446 12.421 <2e-16 ***x2 2.9446 0.1973 14.926 <2e-16 ***---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 1352.99 on 999 degrees of freedomResidual deviance: 623.34 on 997 degrees of freedomAIC: 629.34
Number of Fisher Scoring iterations: 6
#將模型參數定義為變量w> w <- model$coef
#將-w[1]/w[3]作為分割線的縱截距定義為變量inter> inter <- -w[1]/w[3]
#將-w[2]/w[3]作為分割線的斜率定義為變量slope> slope <- -w[2]/w[3]
#將變量data內的數據點,和求出的分割線可視化并定義為變量p3> p2 <- ggplot(data=plotdata,aes(x=x1,y=x2,color=y))+geom_point()+geom_abline(intercept = inter,slope = slope)> p2
#設置隨機種子為1> set.seed(1)
#將整數1,2,3分別定義為變量b0,b1,b2> b0 <- 1 ; b1 <- 2 ; b2 <- 3
#產生1000個服從正態分布的隨機數分別定義為變量x1,x2> x1 <- rnorm(1000) ; x2 <- rnorm(1000)
#將以上產生的b0,b1,b2,x1,x2計算定義為浮點數變量z> z <- b0 + b1*x1 + b2*x2
#將z帶入邏輯回歸計算函數,定義為變量pr> pr <- 1/(1+exp(-z))
#使用模擬產生二項分布數據函數rbinom,定義樣本容量為1000,點分布的試驗次數為1,點分布成功概率為pr “0<pr<1”> y <- rbinom(1000,1,pr)
#將x1,x2,y=factor(y)定義為數據幀變量plotdata> plotdata <- data.frame(x1,x2,y=factor(y))
#觀察plotdata2全貌> summary(plotdata)
#將數據幀plotdata2作可視化,定義為變量p> p <- ggplot(data=plotdata,aes(x=x1,y=x2,color=y))+geom_point()> p
#將變量x1,x2,y組成數據幀帶入變量data> data <- data.frame(x1,x2,y)
#用邏輯回歸函數glm()將數據幀data進行邏輯回歸分析,分析結果定義為變量model> model <- glm(y~.,data=data,family = "binomial")
#觀察分析結果model全貌> summary(model)
Call:glm(formula = y ~ ., family = "binomial", data = data)
Deviance Residuals: Min 1Q Median 3Q Max -2.78286 -0.38847 0.08272 0.44502 2.36265
Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) 0.9613 0.1128 8.524 <2e-16 ***x1 1.7954 0.1446 12.421 <2e-16 ***x2 2.9446 0.1973 14.926 <2e-16 ***---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 1352.99 on 999 degrees of freedomResidual deviance: 623.34 on 997 degrees of freedomAIC: 629.34
Number of Fisher Scoring iterations: 6
#將模型參數定義為變量w> w <- model$coef
#將-w[1]/w[3]作為分割線的縱截距定義為變量inter> inter <- -w[1]/w[3]
#將-w[2]/w[3]作為分割線的斜率定義為變量slope> slope <- -w[2]/w[3]
#將變量data內的數據點,和求出的分割線可視化并定義為變量p3> p2 <- ggplot(data=plotdata,aes(x=x1,y=x2,color=y))+geom_point()+geom_abline(intercept = inter,slope = slope)> p2
總結
以上是生活随笔為你收集整理的R语言 - 逻辑回归的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: R语言逻辑运算
- 下一篇: 新海诚没有参与制作的作品_新海诚作品天气