2018年11月17日 星期六

R常用指令與迴歸分析

(本篇文章利用R語言實作)

這篇文章主要會談到基本R語言的操作
學習一些常用的的函數
以及如何利用R建立一個迴歸模型

首先設定根目錄的位置及匯入需要使用的套件
其中匯入的函數跟python的import不一樣
R語言使用的是library喔
setwd('C:\\Users\\user1\\Desktop\\數量方法\\HW1')
library(readxl)
test_sc <- read_xlsx('caschool.xlsx', col_names = T)

根目錄設置的目的在前面的文章有提過
有問題的同學可以參考這個連結喔:
https://datascienceicwang.blogspot.com/2018/10/blog-post.html
而readxl主要是用來讀取資料的套件
接著把資料讀入

匯入資料後 我們首先想知道整體資料的長相
因此先計算資料的平均數和標準差
也看看各個分位數的情況
test_sc <- test_sc[,c(11,14)]

ans_mean <- sapply(test_sc, FUN = mean)
ans_std <- sapply(test_sc, FUN = sd)

qunt <- c(0.1, 0.25, 0.4, 0.5, 0.6, 0.75, 0.9)
ans_qunt <- sapply(test_sc, FUN = quantile, probs = qunt)

ans <- rbind(ans_mean, ans_std, ans_qunt)

其中我們只關心第11個變數和第14個變數的情況
所以我們運用[]來將資料切片
在中括弧內 前面是列 後面是欄
若是要取超過一個的話 記得要用一個vector表示

接著就可以用sapply這個函式算出答案了
apply函數主要的功用是可以把整個資料都放進FUN後的方法運算
並不需要逐項打出來 或是運用迴圈運算
而sapply裡面要放的參數便是資料和要運用的函式
這邊就是利用mean和sd

接著計算各個分位數 其中則是運用quantile完成
而我們在sapply運用的函數中的參數
則也會變成sapply的參數
所以在這裡 probs這個qualtile的參數 就寫在sapply裡面了

最後我們把算出的東西以列為方式結合起來
把它印出來看看吧

其中我們想看看這兩者的相關係數
就可以使用以下函數
cor(test_sc$testscr, test_sc$str)

只要將要計算的變數放進去就可以算出來了
是不是很簡單呢

而若是我們想以某種方式將資料分組再分析呢?
例如我們想將生師比(str)分成20以上和以下的族群
再分別計算平均數、標準差和計數
test_sc_1 <- subset(test_sc, test_sc$str < 20)
test_sc_2 <- subset(test_sc, test_sc$str >= 20)

test_sc_1_mean <- mean(test_sc_1$testscr)
test_sc_2_mean <- mean(test_sc_2$testscr)
test_sc_1_std <- sd(test_sc_1$testscr)
test_sc_2_std <- sd(test_sc_1$testscr)
test_sc_1_cnt <- length(test_sc_1$testscr)
test_sc_2_cnt <- length(test_sc_1$testscr)
row0 <- c('Class size', 'Average score', 'Standard deviation', 'n')
row1 <- c('Small', test_sc_1_mean, test_sc_1_std, test_sc_1_cnt)
row2 <- c('Large', test_sc_2_mean, test_sc_2_std, test_sc_2_cnt)
ans_1 <- rbind(row0, row1, row2)

一開始利用subset函數將資料拆開
參數分別放入資料和切割準則

接著就是計算平均數和標準差了
而length則是觀看資料筆數的函數
最後我們用rbind方法把答案合併起來

雖然看起來有點笨 但確實很好呈現了結果

學會了解資料後
就來學習如何建立迴歸模型吧
而這邊我們使用不同的資料來呈現
library(wooldridge)
data(econmath)
sc_lm <- lm(econmath$score ~ econmath$colgpa+econmath$actmth+econmath$acteng)
summary(sc_lm)

首先匯入了wooldridge套件
這是一個有各個資料的套件
主要是來自這位教授所撰寫的計量經濟學書中會用到的資料集
從中匯入ecomath資料

接著就可以運用lm函數了
lm在R語言中是linear model的意思
就是讓我們可以建立出現線性迴歸模型的函數(但也可以建立非線性模型)
使用的方法也很簡單
就是 lm(應變數~自變數)
最後就可以用summary來看看估計出的結果啦
(點擊看大圖)

主要專注在這部分
首先是估計出的係數
這部分可以看出來係數、標準誤和t值p值
可以從中看出係數的顯著性
而這邊R也很貼心的用*表示
通常*越多表示該估計係數的越顯著
在下面也有表示他的顯著性

接著有R square和調整後的R square
R square是顯示模型的配適度
調整後R square也是一樣的東西
只是對於新增的變數有懲罰

最後F統計量 則是看變數是否全部無影響
也就是各個變數的係數是否異於0
而這裡p value很小 所以可以拒絕掉這個假設

所以今天學到的有:
基本R語言的各項操作
各項統計量
迴歸式的估計
了解R的輸出報表

未來會繼續分享資料分析的實例給大家囉~

沒有留言:

張貼留言