<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          R語言的入門學(xué)習(xí)筆記(部分)

          共 7832字,需瀏覽 16分鐘

           ·

          2021-08-24 12:42

          本文首發(fā)在陳銳博客(7988888.xyz),此文章中所有鏈接均通過博客進(jìn)行訪問。

          本文學(xué)習(xí)主要為打卡內(nèi)容使用,非教程。

          內(nèi)容來源:本學(xué)習(xí)教程主要參考來源網(wǎng)址:https://rlearning.netlify.app/

          輔助視頻教程:B站:https://www.bilibili.com/video/BV19x411X7C6?p=24

          本學(xué)習(xí)內(nèi)容課程大綱

          Task00:熟悉規(guī)則與R語言入門(1天)

          • 安裝

          • 環(huán)境配置

          Task01 數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)集 (3天)

          • 編碼基礎(chǔ)

          • 數(shù)據(jù)類型

          • 特殊數(shù)據(jù)類型

          • table like 數(shù)據(jù)類型

          • 加載數(shù)據(jù) (csv, rds, excel, Rdata)

          • 實例

          Task02 數(shù)據(jù)清洗與準(zhǔn)備 (3天)

          • 重復(fù)值處理

          • 缺失值識別與處理

          • 異常值識別與處理

          • 特征處理

          • 規(guī)范化與偏態(tài)數(shù)據(jù)

          Task03 基本統(tǒng)計分析 (3天)

          • 多種方法獲取描述性統(tǒng)計量

          • 分組計算描述性統(tǒng)計

          • 頻數(shù)表和列聯(lián)表

          • 相關(guān)

          • 方差分析

          Task04 數(shù)據(jù)可視化(3天)

          • ggplot2包介紹

          • 散點圖

          • 直方圖

          • 柱狀圖

          • 餅狀圖

          • 折線圖

          • ggplot2擴(kuò)展包主題

          Task05 模型(3天)

          • 回歸模型

          • 分類模型


          本次學(xué)習(xí)根據(jù)課程大綱安排,將在2021年8月16日-2021年8月31日完成學(xué)習(xí)

          Task00 R/Rstudio的安裝

          R語言下載網(wǎng)址:https://cloud.r-project.org/,R 語言是一門用于統(tǒng)計計算與繪圖的編程語言和開源軟件

          RStudio下載網(wǎng)址:https://www.rstudio.com/products/rstudio/ 它包括一個控制臺、語法突出顯示的編輯器、直接執(zhí)行代碼的支持,以及用于繪圖、歷史記錄、調(diào)試和工作區(qū)管理的工具。

          對于安裝過程,可百度進(jìn)行。


          在console窗口中可查詢包的用法信息,通過輸入首字母然后可通過鍵盤按鍵Tab進(jìn)行補(bǔ)全包的名稱。

          可通過在Console輸入getwd()函數(shù)來獲取當(dāng)前工作路徑

          右下角圖展示的當(dāng)前項目中的文件數(shù)據(jù)等

          調(diào)整寫代碼的顏色主題:

          Global Options-Appearance-RStudio Theme

          快捷按鍵:

          window:

          control  + ??  可一次性查詢歷史記錄

          alt+shift+k


          MacOS:

          Command + ?? 可一次性查詢歷史記錄

          option+shift+k 查詢所有快捷操作


          ESC中斷語句進(jìn)行

          cltr + L清除console中的記錄


          切換鏡像源:

          由于網(wǎng)速慢的原因,有時安裝包會安裝失敗。

          通過將包安裝切換至中國鏡像來解決:點【Tools】→【Global Options...】→【Packages】→【Change...】→【選中一個中國鏡像】→【OK】→【OK】。如下圖,以后安裝包都會通過這個鏡像。


          R包的安裝:

          在選中合適的鏡像源后,可在console窗口,輸入命令

          在線安裝:

          install.packages("包名稱")

          離線安裝:

          下載好安裝文件后,通過packages-install-選擇安裝路徑

          查看已安裝的全部R包:

          .packages(all.available = T)

          查看單獨的包:

          library("包名")


          Task01 數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)集

          Getwd()獲取路徑

          在 R Studio 中可以使用快捷鍵

          window:

          Alt + -來輸入<-

          Mac:

          option + -來輸入<-


          在R語言中的基礎(chǔ)運算符號過程

          賦值:

          在 R 中基礎(chǔ)賦值的符號有三種:

          1. 一個向左的箭頭<-表示將箭頭右方的值取名叫做箭頭左側(cè)的名字,或者將箭頭右側(cè)的值存儲在箭頭左側(cè)的名字里;

          2. 一個向右的箭頭->表示將箭頭左側(cè)的值儲存在箭頭右側(cè)的名字里;

          3. 一個等號=表示將箭頭右側(cè)的值存儲在箭頭左側(cè)的名字里。

          x <-1
          y <-2
          x+y


          函數(shù):其實就是某些功能的賦值,比如addone此時就是函數(shù)

          addone <- function(x = 0) {
           x + 1
          }


          loop循環(huán):

          R 中的循環(huán)函數(shù)包括forwhile,和repeat

          for用法:

          for (variable in vector) {
             
          }

          在console窗口輸入?for即可查找相關(guān)用法,或在help欄中輸入也可

          此處R中的loop用法跟Python中的很像,主要是條件的判斷。


          管道pipe:說起來就是簡化函數(shù)的定義,能更方便的修改和識別函數(shù)。

          可以參考此篇文章的解答:https://zhuanlan.zhihu.com/p/43423747https://zhuanlan.zhihu.com/p/339107871


          數(shù)據(jù)類型:

          在R中有五種基礎(chǔ)數(shù)據(jù)類型,包括三個數(shù)值型、一個邏輯型和一個字符型。

          數(shù)值型數(shù)據(jù)包括三種,分別是默認(rèn)的實數(shù)數(shù)值型數(shù)據(jù)(double)、整數(shù)類型(integer)和復(fù)數(shù)類型(complex):

          #numeric
          a<-1000.111
          #integer
          b<-1000
          #complex
          c<-2 + 3i


          判斷數(shù)值類型:

          typeof()


          邏輯型(logical)數(shù)據(jù)只包括兩個值,TRUET) 和 FALSEF):

          字符型數(shù)據(jù)(character)可以總結(jié)為“任何帶引號的值”。在Python中表示未字符串類型string

          向量vector,向量是由一組相同類型的值組成的一維序列。vec_num <- c(1, 2, 3),在向量中可使用sum、mean等函數(shù)進(jìn)行計算。sum(vec_num) = 6

          因子(factor),可以使用函數(shù)factorc組合來創(chuàng)建。它與字符向量的主要區(qū)別在于因子向量的獨特值(levels)是有限個數(shù)的。


          數(shù)值類型轉(zhuǎn)換:

          按照自由程度將已經(jīng)提到的幾種向量以從高到低的排序可得

          字符>數(shù)值>邏輯

          在數(shù)值型內(nèi)的排序從自由度高到低為

          復(fù)數(shù)>實數(shù)>整數(shù)


          三種截取子集的符號:[、[[$(其中$不能用在基礎(chǔ)向量上)


          特殊數(shù)據(jù)類型

          日期:處理的包(lubridata

          時間序列time series,首先要確保安裝了forecast包

          library(forecast)
          gas %>%
           auto.arima() %>%
           forecast(36) %>%
           autoplot()


          矩陣(matrix)

          在R里,矩陣是一個按照長方陣列排列的、有著固定行數(shù)和列數(shù)的、包含同一類型數(shù)據(jù)的集合??墒褂煤瘮?shù)matrix

          對于一個矩陣來說,主要的命名集中于行名rownames和列名colnames


          列表(list)

          它和向量或者矩陣不一樣,在一個列表中可以儲存各種不同的基本數(shù)據(jù)類型。你既可以存三個數(shù)字,也可以把數(shù)值型、字符型、邏輯型混合


          數(shù)據(jù)表(data frame與tibble)

          一個數(shù)據(jù)表(data frame)的本質(zhì)是一個列表(list)


          內(nèi)置數(shù)據(jù)集

          使用data命令來查看、使用可用數(shù)據(jù)集


          讀取數(shù)據(jù)文件

          # 讀取csv文件
          library(readr)
          h1n1_flu <- read_csv("h1n1_flu.csv")
          # 保存csv文件
          write_csv(h1n1_flu, "h1n1_flu.csv")


          R也可以直接讀取其他軟件的數(shù)據(jù)類型。這里列舉使用haven包讀寫 SPSS 的 sav 和 zsav、 Stata 的 dta、SAS 的 sas7bdat 和 sas7bcat。

          library(haven)
          #SPSS
          read_spss()
          write_spss()

          對于函數(shù)的介紹,可參考文章《R語言函數(shù)總結(jié)》

          練習(xí)題


          Task02 數(shù)據(jù)清洗與準(zhǔn)備

          這一章節(jié)有點難,需要花時間來琢磨。主要是對包的加載和使用其中的函數(shù)不了解。

          環(huán)境配置(包加載)

          數(shù)據(jù)集1:加載數(shù)據(jù)(本地文件h1n1_flu.csv)和查看部分?jǐn)?shù)據(jù)(從33個特征中篩選出10個特征用于后續(xù)處理)

          h1n1_data <- read.csv("h1n1_flu.csv",header = TRUE)
          dim(h1n1_data)
          h1n1_data <- h1n1_data[, c(1, 3, 11, 12, 15, 16, 19, 20, 22, 23, 33)]
          head(h1n1_data)

          數(shù)據(jù)集2:波士頓房價數(shù)據(jù)集(mlbench包中)(13個特征+1個預(yù)測字段)

          data(BostonHousing)
          dim(BostonHousing)
          head(BostonHousing)


          重復(fù)值處理

          unique()函數(shù)可以對數(shù)據(jù)進(jìn)行整體去重,distinct()函數(shù)可以針對某些列去重。

          # 整體去重
          h1n1_data_de_dup1 <- unique(h1n1_data)

          # 指定根據(jù)列respondent_id,h1n1_knowledge去重,并保留所有列
          h1n1_data_de_dup2 <- distinct(h1n1_data, respondent_id, h1n1_knowledge, .keep_all = T)


          缺失值識別和處理

          常用方法:

          在R語言中,慣用會把缺失值表示為NA,一般可使用is.na(a),!complete.cases(a)來識別a是否為缺失值

          # 假設(shè)定義的一個變量中存在缺失值
          y <- c(1, 2, 3, NA)

          # 用is.na在識別是否為缺失值
          is.na(y)

          # 用!complete.cases()在識別是否為缺失值
          !complete.cases(y)

          缺失值統(tǒng)計(使用is.na(x)

          # 數(shù)據(jù)集中總?cè)笔?shù)據(jù)量
          sum(is.na(h1n1_data))

          # 數(shù)據(jù)集中某一列缺失數(shù)據(jù)量
          sum(is.na(h1n1_data["h1n1_knowledge"]))

          數(shù)據(jù)中某一行來統(tǒng)計。

          pMiss <- function(x) {
           sum(is.na(x)) / length(x) * 100
          }
          apply(h1n1_data, 2, pMiss) # 按列統(tǒng)計缺失比率%

          還可以 調(diào)用現(xiàn)成的包。


          缺失值機(jī)制與分析:

          分為完全隨機(jī)缺失(MCAR),隨機(jī)缺失(MAR)和非隨機(jī)缺失(MNAR)

          (1)完全隨機(jī)缺失:缺失現(xiàn)象完全隨機(jī)發(fā)生,與自身或其他變量的取值無關(guān)。(2)隨機(jī)缺失:缺失數(shù)據(jù)的發(fā)生與數(shù)據(jù)庫中其他無缺失變量的取值有關(guān)。如果缺失和觀測值之間存在系統(tǒng)關(guān)系,則為MAR(2)非隨機(jī)缺失:若缺失數(shù)據(jù)不屬于MCAR和MAR,數(shù)據(jù)的缺失依賴于不完全變量本身,則數(shù)據(jù)為非隨機(jī)缺失。

          可視化分析缺失數(shù)據(jù)關(guān)聯(lián)的方法:

          使用VIM中的aggr函數(shù):

          # cex.axis調(diào)整軸字體大小,oma調(diào)整外邊框大小
          aggr(h1n1_data, cex.axis = .6, oma = c(9, 5, 5, 1))

          # 先簡單處理一下一些類別變量的順序
          h1n1_data_matplt <- h1n1_data
          h1n1_data_matplt$age_group <- factor(h1n1_data_matplt$age_group)
          h1n1_data_matplt$education <- factor(h1n1_data_matplt$education, levels = c("", "< 12 Years", "12 Years", "Some College", "College Graduate"))
          h1n1_data_matplt$sex <- factor(h1n1_data_matplt$sex)
          h1n1_data_matplt$income_poverty <- factor(h1n1_data_matplt$income_poverty, levels = c("18 - 34 Years", "<= $75,000, Above Poverty", "> $75,000"))
          # levels(h1n1_data_matplt$age_group) # 查看順序

          # 矩陣圖可視化
          par(mar = c(9, 4.1, 2.1, 2.1)) # x軸標(biāo)簽太長,調(diào)用par()函數(shù)調(diào)整外邊框的大小
          matrixplot(h1n1_data_matplt, sortby = "chronic_med_condition", cex.axis = 0.7) # cex.axis為調(diào)整坐標(biāo)軸字體大小
          shadow_mat <- as.data.frame(abs(is.na(h1n1_data[, -1])))
          head(shadow_mat)
          # 可提取含缺失值的變量
          shadow_mat <- shadow_mat[which(apply(shadow_mat, 2, sum) > 0)]

          # 計算相關(guān)系數(shù)
          cor(shadow_mat)

          # 相關(guān)系數(shù)熱力圖
          heatmap(cor(shadow_mat))


          缺失值處理:

          1.將缺失值作為變量值使用

          2.刪除法

          3.插補(bǔ)法

          教程介紹了刪除和插補(bǔ)法:

          1.刪除法:

          行刪除使用函數(shù):complete.cases()na.omit()

          h1n1_data_row_del1 <- h1n1_data[!complete.cases(h1n1_data), ]
          h1n1_data_row_del2 <- na.omit(h1n1_data)

          列刪除:dataset[,-5]subset(dataset, select = -c(col1, col2))

          #比如刪除health_insurance
          h1n1_data_col_del1 <- subset(h1n1_data, select = -c(health_insurance))


          2.插補(bǔ)法:簡單插補(bǔ)法、擬合插補(bǔ)法、多重插補(bǔ)法

          還需要多查找資料了解:

          多重插補(bǔ)法: 處理缺失值之多重插補(bǔ)(Multiple Imputation)https://zhuanlan.zhihu.com/p/36436260


          異常值識別

          識別:有幾種常用方法,包括可視化圖形分布識別(箱線圖)、z-score識別、局部異常因子法(LOF法)、聚類法等。

          z-score是一種一維或低維特征空間中參數(shù)異常檢測方法。它假定數(shù)據(jù)是高斯分布,異常值是分布尾部的數(shù)據(jù)點,因此遠(yuǎn)離數(shù)據(jù)的平均值。一般將z-score低于-3或高于3的數(shù)據(jù)看成是異常值。

          局部異常因子法(LOF),是一種無監(jiān)督的離群檢測方法,是基于密度的離群點檢測方法中一個比較有代表性的算法。適用于在中等高維數(shù)據(jù)集上執(zhí)行異常值檢測。


          特征編碼

          特征編碼其實在很多程序語言中都會使用到,它是對一類特征的一種歸類,能更好的用于后續(xù)的數(shù)據(jù)處理。

          1.獨熱編碼/啞編碼

          One-hot encoding 和 dummy,是將類別變量擴(kuò)充為多個只顯示0,1的變量,每個變量代表原類別變量中的一個類。 ——來源學(xué)習(xí)教程

          2.標(biāo)簽編碼

          標(biāo)簽編碼(Label Encoder)是將類別變量轉(zhuǎn)換成連續(xù)的數(shù)值型變量,通常對有序的變量進(jìn)行標(biāo)簽編碼,既保留了順序信息,也節(jié)約了空間(不會擴(kuò)充變量)

          3.手動編碼

          即自定義編碼,可以用特定的函數(shù)進(jìn)行處理,比如case_when()


          規(guī)范化與偏態(tài)數(shù)據(jù)

          為什么要數(shù)據(jù)規(guī)范化?簡單來說是為了去除數(shù)據(jù)量綱和數(shù)據(jù)大小的差異,確保數(shù)據(jù)是在同一量綱或者同一數(shù)量級下進(jìn)行比較,一般用在機(jī)器學(xué)習(xí)算法之前。數(shù)據(jù)規(guī)范化又可以使用0-1規(guī)范化,Z-score等方法。

          為什么要處理偏態(tài)數(shù)據(jù)?。很多模型會假設(shè)數(shù)據(jù)或參數(shù)服從正態(tài)分布。例如線性回歸(linear regression),它假設(shè)誤差服從正態(tài)分布?!獊碓磳W(xué)習(xí)教程

          規(guī)范化的方法:

          1.0-1規(guī)范化

          2.Z-score標(biāo)準(zhǔn)化

          3.對數(shù)轉(zhuǎn)換(log transform)

          4.Box-Cox

          附錄:參考資料

          理論資料

          數(shù)據(jù)的預(yù)處理基礎(chǔ): 如何處理缺失值 https://cloud.tencent.com/developer/article/1626004

          多重插補(bǔ)法: 處理缺失值之多重插補(bǔ)(Multiple Imputation)https://zhuanlan.zhihu.com/p/36436260

          異常值檢測: R語言--異常值檢測 https://blog.csdn.net/kicilove/article/details/76260350

          異常值檢測之LOF: 異常檢測算法之局部異常因子算法-Local Outlier Factor(LOF) https://blog.csdn.net/BigData_Mining/article/details/102914342

          規(guī)范化: 規(guī)范化、標(biāo)準(zhǔn)化、歸一化、正則化 https://blog.csdn.net/u014381464/article/details/81101551

          什么樣的模型對缺失值更敏感?: https://blog.csdn.net/zhang15953709913/article/details/88717220

          R語言函數(shù)用法示例

          funModeling用法示例:https://cran.r-project.org/web/packages/funModeling/vignettes/funModeling_quickstart.html

          tidyverse官方文檔:https://www.tidyverse.org/

          VIM教學(xué)網(wǎng)頁:https://www.datacamp.com/community/tutorials/visualize-data-vim-package

          mice使用文檔(Multivariate Imputation by Chained Equations):https://cran.r-project.org/web/packages/mice/mice.pdf

          mice使用中文解釋:https://blog.csdn.net/sinat_26917383/article/details/51265213

          mice檢驗結(jié)果解釋:http://blog.fens.me/r-na-mice/

          caret包數(shù)據(jù)預(yù)處理:https://www.cnblogs.com/Hyacinth-Yuan/p/8284612.html

          R語言日期時間處理:https://zhuanlan.zhihu.com/p/83984803

          基于R語言進(jìn)行Box-Cox變換:https://ask.hellobi.com/blog/R_shequ/18371

          R中數(shù)據(jù)集分割:https://zhuanlan.zhihu.com/p/45163182


          Task03 基本的統(tǒng)計分析

          待學(xué)習(xí)待更新。



          內(nèi)容參考網(wǎng)絡(luò)資料,以上內(nèi)容僅供學(xué)習(xí)使用,不作其它用途,如有侵權(quán),請留言以下微信號,作刪除處理!


          有任何疑問及建議,掃描以下公眾號二維碼添加交流:


          瀏覽 114
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本操屄视频 | 天天日天天干天天舔 | 电家庭影院午夜 | 五月天成人影院 | 成人AV色婷婷 |