R語言預測

R 語言是屬於統計應用領域的程式語言,所以在做統計相關的分析時,R 語言就會顯得相當人性化,統計模型的建置、估計與預測都非常容易上手,今天小編就來講講R語言常用的回歸估計與預測。

首先先建立一個 data.frame,data 當中含有三個變數,x、y、y.binomial。其中 x、y 為實數, y.binomial 是由 0 與 1  構成的數列,再依序利用線性回歸、羅吉斯回歸與回歸樹來進行建模與預測。在線性回歸中用 x 來預測 y ;在羅吉斯回歸與回歸樹中,用 x 來預測 y.binomial 變數為 1 的機率。

> set.seed(5566)

> data <- data.frame(y = 1:100+rnorm(100,0,5), x = 1:100,

+                    y.binomial = c(rbinom(20,1,0.2),rbinom(50,1,0.5),rbinom(30,1,0.7)))

線性回歸模型用到的是 lm() 這個函數,並指定要以 y 為應變數, x 為自變數,亦即我們想要用 x 來解釋 y ,並且最後再用 x 來預測 y。

> fit <- lm(y~x , data)

> summary(fit)

summary的結果就不列出來了,這是一些指標在說明這個統計模型配適的如何,但我們的重點是預測。將配適好的模型物件放入 predict() 函數中,資料放含有變數名稱"x"的資料,並指定預測結果為 y.predict,再將結果與原始的 y 畫出來。

> y.predict <- predict(fit ,data)

> plot(data$y,type = “l")

> points(y.predict, type = “l", col = 2)

> legend(“topleft", c(“y", “y.predict"), col = 1:2,  lty = 1)rplot

羅吉斯回歸用到的是 glm() 函數,被解釋的變數 y.binomial 是由 0 與 1 構成。預測的方法與 lm() 相似,但其中要加入type = “response”,代表我們要的是 y.binomial 為 1 的機率(probability),而非勝算(odds)。

> fit.log <- glm(y.binomial ~ x , family = “binomial" , data = data)

> summary(fit.log)

> y.binomial.predict <- predict(fit.log, data, type = “response")

分類樹用到的是 tree() 函數,被解釋的變數依舊是 y.binomial ,也一樣用 predict() 加上配適好的模型來進行預測。由回歸樹的字義上來看其模型類似一棵樹,符合其條件者( x < 53.5 )往左邊走,不符合條件者則被歸類右邊,每分類一次都會有一個數字顯示 y.binomial 的平均值,也就是 y.binomial 為 1 的機率。 

> library(tree)

> tmax <- tree(y.binomial ~ x, data)

> plot(tmax) ; text(tmax, all = T)

rplot01

> y.binomial.predict.tree <- predict(tmax, data)

最後來比較一下,兩個方法的預測結果:

> plot(y.binomial.predict.tree,type = “l")

> points(y.binomial.predict, type = “l", col = 2)

> legend(“topleft", c(“CART", “logistics regression"), col = 1:2,  lty = 1)rplot02

羅吉斯回歸所預測出來的機率是一條曲線,但回歸樹預測出來的是一個區間的機率,且回歸樹可以調整要分成多少個節點,詳細內容可以看之前的文章「R語言的決策樹應用」。依照想要預測的資料類型選擇適合的預測模型,就能做簡單的預測。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s