1. 程式人生 > >統計學基礎與R語言----1(簡介與一些R函式介紹)

統計學基礎與R語言----1(簡介與一些R函式介紹)

最近在看一些機器學習的書,想起自己以前學的R和統計學,感覺以前都是囫圇吞棗,沒有搞清楚。現在重新把以前的書拿出來讀一讀,並把程式碼再敲一遍,感覺收穫還是蠻多的。

1.1 我的參考書籍

R語言學習書籍:資料探勘與R語言

統計學:R語言與統計分析

1.2 程式設計環境

win10 + R-64位  + RStudio

1.3 R的簡介與入門

R是一種解釋性語言,而不是編譯語言,R裡面有豐富的函式與包(類似python中的模組)。

R中所有的函式後都帶有圓括號以區別於物件(object). 當R執行時,所有變數、資料、函式及結果都以物件的形式存入計算機的活    動記憶體中,並冠有相應的名字代號. 我們可以通過一些運算(如算術、邏輯、比較等)和一些函式(其本   身也是物件)來對這些物件進 行操作。

如:

n <- 10
#列出記憶體中的
ls()
#刪除原有記憶體中的
rm(list = ls())
#列出系統給R的記憶體限制
memory.limit()
#列出系統當前佔用的記憶體
memory.size(F)
#列出當前系統分配的記憶體(動態調整的)
memory.size(T)
#R中的幫助文件
# ? 獲得memory.limit的相關資訊
# 注意函式名要加雙引號當做引數使用
?memory.limit
help('ls')
example("mean")
help("help")
#apropos 獲得所有名字中含有指定字串“fun”的函式,但只會在被載入
# 記憶體中的程式包中進行搜尋.
apropos("fun")
#獲取ls函式的引數
args('ls')

1.4載入資料並進行簡單的統計分析

?mtcars
#控制檯顯示mtcars資料
mtcars
#顯示mtcars 資料前七條資料
head(mtcars)
#顯示mycars的 變數
names(mtcars)
#修改mtcars中的資料 data.entry 或者直接edit()/fix()
#命令data.entry( )和edit( )都可用於編輯向量、矩陣、資料
#框和列表,前者啟用的都是R的資料編輯器, 後者有所不同: 對於向量、
#列表和陣列edit( )啟用的是R Editor.
data.entry(mtcars)
edit(mtcars)
mtcars
#mtcars
fix(mtcars)
MTcars <- edit(mtcars)
MTcars

mtcars
mtcars$cyl

data.entry(mtcars)
mtcars$cyl
# 貼上資料到R搜尋區 不然只能使用mtcars$cyl訪問
attach(mtcars)
cyl
#變數cyl取3個值:4,6,8,相應的頻數為11, 7, 14
table(cyl)
#cyl的頻數直方圖 barplot 僅適用於數值變數
barplot(table(cyl),xlab = '汽缸數')

#畫莖葉圖(stem-and-leaf plot),
stem(mpg)
#畫直方圖
hist(mpg)
#畫箱體圖
boxplot(mpg)
#計算均值
mean(mpg)
#計算截去10%的平均值
mean(mpg,trim = 0.1)
#按分組變數cyl計算mpg的分組平均值
tapply(mpg,cyl,sum)
?tapply
#四分位數的極差(interquartile range)
IQR(mpg)
#樣本常用的分位數: 極小、極大、中位數及兩個四分位數
quantile(mpg)
#得到給定概率的樣本分位數
probs = c(0.1,0.5,99.5)/100
quantile(mpg,probs = probs)
?quantile
probs = c(25,50,75)/100
quantile(mpg,probs = probs)
#計算常用的描述性統計量, 它們分別是最小值(Min.)、第一四分位數(1st
#Qu.)、中位數(Median)、平均值(Mean)、第三分位數(3rd Qu.)和最大
#值(Max.)
summary(mpg)
#計算標準差
sd(mpg)
#計算中位絕對離差(median absolute deviation)
#
mad(mpg)

#尋找二元關係
?legend
#按照cyl分組 畫出散點圖
plot(mpg~hp,col = 'blue' ,pch=cyl)
#新增圖例(x,y) 表示位置  pch散點圖中點的symbol
legend(230,20,pch=c(4,6,8),
       legend=c("4 cylinders","6 cylinders","8 cylinders"))
model <- lm(mpg~hp)
abline(model,lty=3)
#殘差分析
res = resid(model)
plot(res)
hist(res)
qqnorm(res)
#分析擬合結果
# 一些統計名詞:
# 相關係數:自變數X和因變數Y的協方差/標準差的乘積。
#   協方差:兩個變數變化是同方向的還是異方向的。X高Y也高,協方差就是正,相反,則是負。
#   為什麼要除標準差:標準化。即消除了X和Y自身變化的影響,只討論兩者之間關係。
#   因此,相關係數是一種特殊的協方差。
# cor(mpg,hp)
# R平方:R2=SSR/SST=1-SSE/SST
#   SST (total sum of squares):總平方和
#   SSR (regression sum of squares):迴歸平方和
#   SSE (error sum of squares) :殘差平方和。
#   殘差(residual):實際值與觀察值之間的差異
# 標準差:表示個體間變異大小的指標,反映了整個樣本對樣本平均數的離散程度,
#         是資料精密度的衡量指標
#   sd(mpg)
# 標準誤:在抽樣試驗(或重複的等精度測量) 中, 常用到樣本平均數的標準差,
#         亦稱樣本平均數的標準誤或簡稱標準誤( standard error of mean) 。
#         因為樣本標準差s 不能直接反映樣本平均數x 與總體平均數μ究竟誤差多少,
#         所以, 平均數的誤差實質上是樣本平均數與總體平均數之間的相對誤。
#         反映樣本平均數對總體平均數的變異程度,從而反映抽樣誤差的大小 ,
#         是量度結果精密度的指標

#參考別人寫的類似於qqnorm 
my.qqnorm <- function(x){
  op <- par(mfrow = c(1, 1))
  n <- seq(1, length(x))
  qqnorm(x)
  xais <- qnorm((n -0.5)/ length(x))
  # xais <- qnorm((n - (.5*length(x)) /length(x))/ length(x))
  cbind(xais, x)
  par(mfrow = c(2, 1))
  qqnorm(x)
  plot(sort(x) ~ xais, main = 'my qqnorm')
  par(op)
}
x <- rnorm(30, mean = 20, s = 50)
my.qqnorm(x)

detach(mtcars)

1.5筆記

1.qqplot & qqnorm & qqline Quantile-Quantile Plot
  QQplot的橫座標是theoretical quantilies,縱座標是sample quantilies
  sample quantilies是你的樣本原始的資料(sort之後的),theoretical quantilies  參考(http://onlinestatbook.com/2/advanced_graphs/q-q_plots.html)計算。
  解釋:
  假設你有100個數據,那麼每個資料都看做一個分位點,sample quantilies就是100個數據本身(1%的分為點就是100個數中最小的那個數,2%的分為點就是100個數中   第二小的那個數,依次類推),theoretical quantilies是什麼呢?他是標準正態   分佈的分位數100個數取哪些分為點呢?具體的計算方法是這樣的,(1:100-0.5)/100 你可以得到0.005 0.015 0.025 ...0.995,然後分別計算在0.005 0.015 0.025 ...0.995的面積下,標準正態分佈的分位數。
  
2.一些統計名詞
# 相關係數:自變數X和因變數Y的協方差/標準差的乘積。
#   協方差:兩個變數變化是同方向的還是異方向的。X高Y也高,協方差就是正,相反,則是負。
#   為什麼要除標準差:標準化。即消除了X和Y自身變化的影響,只討論兩者之間關係。
#   因此,相關係數是一種特殊的協方差。
# cor(mpg,hp)
# R平方:R2=SSR/SST=1-SSE/SST
#   SST (total sum of squares):總平方和
#   SSR (regression sum of squares):迴歸平方和
#   SSE (error sum of squares) :殘差平方和。
#   殘差(residual):實際值與觀察值之間的差異
# 標準差:表示個體間變異大小的指標,反映了整個樣本對樣本平均數的離散程度,
#         是資料精密度的衡量指標
#   sd(mpg)
# 標準誤:在抽樣試驗(或重複的等精度測量) 中, 常用到樣本平均數的標準差,
#         亦稱樣本平均數的標準誤或簡稱標準誤( standard error of mean) 。
#         因為樣本標準差s 不能直接反映樣本平均數x 與總體平均數μ究竟誤差多少,
#         所以, 平均數的誤差實質上是樣本平均數與總體平均數之間的相對誤。
#         反映樣本平均數對總體平均數的變異程度,從而反映抽樣誤差的大小 ,
#         是量度結果精密度的指標

3.理解rbinom中的引數
for (n in c(10,20,50)) {
     x = rbinom(100,n,p)
     hist(x,probability = T,main = paste("n = ",n))
     xvals = 0: n
     points(xvals,dbinom(xvals,n,p),type = 'h',lwd = 3)
 }
 rbinom(100,10,0.5)
 隨機進行100次分佈為(10,0.5)的二項式分佈
 dbinom(1,10,0.5)
 成功進行一次在分佈為(10,0.5)的概率
 pbinom(1,10,0.5) = dbinom(0,10,0.5)+dbinom(1,10,0.5)
 根據次數得到小於等於該次數的概率值
 qbinom(0.01,10,0.5)
 根據概率得到分位線
 dnorm gives the density, pnorm gives the distribution function,    qnorm gives the quantile function, and rnorm generates    random      deviates

相關推薦

統計學基礎R語言----1簡介一些R函式介紹

最近在看一些機器學習的書,想起自己以前學的R和統計學,感覺以前都是囫圇吞棗,沒有搞清楚。現在重新把以前的書拿出來讀一讀,並把程式碼再敲一遍,感覺收穫還是蠻多的。 1.1 我的參考書籍 R語言學習書籍:資料探勘與R語言 統計學:R語言與統計分析 1.2 程式設計環境

R語言︱H2o深度學習的一些R語言實踐——H2o包

每每以為攀得眾山小,可、每每又切實來到起點,大牛們,緩緩腳步來俺筆記葩分享一下吧,please~———————————————————————————R語言H2o包的幾個應用案例     筆者寄語:受啟

libgo 原始碼剖析1. libgo簡介排程淺談

閒談 協程是一個很早的概念了,早些年的遊戲行業中已經大規模地在使用,像lua、go這些語言中的協程原語已經相對比較完善了,一般來說直接使用就好,但是在系統後臺開發上,出現的時間並不長。我是做C++方向的後臺開發,目前國內一些公司也開源了一些C++協程庫,但目前來說,還是在逐步完善的階段。最早接觸的C++協程

libgo 源碼剖析1. libgo簡介調度淺談

也會 win todo nag 自旋鎖 階段 上下文切換 環境 src 閑談 協程是一個很早的概念了,早些年的遊戲行業中已經大規模地在使用,像lua、go這些語言中的協程原語已經相對比較完善了,一般來說直接使用就好,但是在系統後臺開發上,出現的時間並不長。我是做C++方向的

PBFT概念Go語言入門Tendermint基礎

Tendermint作為當前最知名且實用的PBFT框架,網上資料並不很多,而實現Tendermint的Go語言,由於相對小眾,也存在資料匱乏和模糊錯漏的問題。本文簡單介紹PBFT概念和Go語言[&開發環境]關鍵知識點,其中大部分都可單獨成篇,限於篇幅,文中提供諸多連結

Python自然語言處理:Tensorflow基礎學習

看了一段時間的TensorFlow,然而一直沒有思路,偶然看到一個講解TensorFlow的系列  視訊,通俗易懂,學到了不少,在此分享一下,也記錄下自己的學習過程。 教學視訊連結:點這裡 在機器學習中,常見的就是分類問題, 郵件分類,電影分類 等等 我這裡使用iris的

R語言︱文字字串處理正則表示式

處理文字是每一種計算機語言都應該具備的功能,但不是每一種語言都側重於處理文字。R語言是統計的語言,處理文字不是它的強項,perl語言這方面的功能比R不知要強多少倍。幸運的是R語言的可擴充套件能力很強,DNA/RNA/AA等生物序列現在已經可以使用R來處理。nchar字元的個數

R語言筆記RRstudio的安裝Windows

初學R語言,當然少不了這為程式設計設計的IDE:RStudio R的獲取與安裝 選擇download R for Windows,下載下來安裝即可(若是其他系統,按照要求安裝即可,這裡僅限於wi

1 python簡介安裝

python安裝在學習一門語言之前,咱們先了解為什麽我們要學它。python是一個腳本語言,語言簡單,兼容各版本系統,學習這門語言將對以後的運維日常工作提供極大的便利。1.1 Linux 下 python 安裝首先從官網下載所需要的 python 版本,解壓後直接編譯安裝即可,[root@server /]#

bp神經網絡模型推導c語言實現轉載

思路 包括 表示 現在 clas 兩個 通過 val c++ 轉載出處:http://www.cnblogs.com/jzhlin/archive/2012/07/28/bp.html BP 神經網絡中的 BP 為 Back Propagation

R語言學習7字符串和因子

const sprint 水平 tostring 大小 pow 個數 end paste 字符串和因子 1.字符串   創建字符串 > c("Hello","World")[1] "Hello" "World"   paste( ) 函數連接字符串 >

[讀書筆記] R語言實戰 基本數據管理

mean 圖片 數值 函數 nbsp 一個 img order 分享 1. 創建新的變量 mydata<-data.frame(x1=c(2,2,6,4),x2=c(3,4,2,8)) #方法一 mydata$sumx<-mydata$x1+mydat

Linux服務管理1-1 課程簡介系統運行級別

post 級別 .com mage div 分享圖片 inux 簡介 log Linux服務管理1-1 課程簡介與系統運行級別

R語言實戰第2版》高清中文版PDF+高清英文版PDF+源代碼

英文版 高清 r語言 color pro mar ffffff text 技術分享 下載:https://pan.baidu.com/s/1DMDKWi9RPs4pYNbK1Kvc_A 《R語言實戰(第2版)》高清中文版PDF+高清英文版PDF+源代碼 高清中文版558頁,

學習筆記-C語言6指標動態記憶體分配

1. 指標 指標的引入: 指標是C語言最強大的功能之一,使用指標可以儲存某個變數在記憶體中的地址,並且通過操作指標來對該片記憶體進行靈活的操作,例如改變原變數的值,或者構造複雜的資料結構。指標一般初始化為NULL(0)。& 是取地址運算,* 是間接運算子,通過 * 可以訪問與修改

學習筆記-C語言1程式設計入門

C語言和C++是作為一名程式設計師必備技能,非科班出身的我對這些語言一直是一知半解,後來更是直接使用簡單易上手的python,matlab語言。今天終於開始系統的學習了C了,記錄一些學習筆記,方便後面檢視,如有不妥,還請幫忙指正。 1. 檔案開頭 檔案開頭要加入:# include<

Go語言實現區塊鏈加密貨幣-Part2交易地址,餘額翻倍漏洞

準備工作: 安裝依賴包:$ go get golang.org/x/crypto/ripemd160 安裝失敗請檢視:https://blog.csdn.net/ak47000gb/article/details/79561358 交易 交易(transaction)是比特幣

R語言筆記(六): 迴圈R指令碼

前面幾部分介紹了向量、矩陣、陣列等的操作, 接下來就要講到迴圈輸出的內容,這就涉及了R語言中的迴圈語句的表達: for() 迴圈 while() 迴圈 接下來再介紹R指令碼的編寫與使用;   ***********************************

Oracle教程(1)-Oracle簡介最簡單的語句

Oracle11g資料庫的安裝swap建議要求不小於1G,也就是實體記憶體不小於2G 一,最簡單的查詢語句 【*】代表所有的列,它與select之後列出的所有的列名是一樣的 如果不用*,select後面加特定列,就可以查詢出特定列的資料 slect後面加多個特定名

Mac版R語言入門資料的匯入

R語言(三)資料的匯入,包括以下幾個部分的內容: R語言問題討論交流,歡迎關注我的新浪微博:Jenny愛學習                1.資料型別介紹