R语言学习
一、
R編輯器下載地址:https://cran.r-project.org/mirrors.html
安裝教程:
其余皆默認安裝,i7以下的系統都選擇32-bit安裝就可以
R自學(各個包的詳細描述):https://mirrors.tuna.tsinghua.edu.cn/CRAN/
二、R語言數據的存儲結構
1.向量
#向量的兩種表示方法 xiangliang1=c(1,2,3,4)#默認是列向量(用行顯示是為了方便),c是連接函數 xiangliang1 #結果:[1] 1 2 3 4 xiangliang2=5:8#返回的是5到8的一個整型向量 xiangliang2 #結果:[1] 5 6 7 8 #索引 xiangliang1[2] #取出第二個向量 結果:2 xiangliang1[c(2,3)]#取出第二三個向量 結果:2,3#xiangliang1[2,3] 錯誤,只能用上述方法 #注:向量和標量做運算(加減乘除)時,要把標量循環補齊 xiangliang2>5#結果:[1] FALSE TRUE TRUE TRUE 注:邏輯向量 xiangliang2[xiangliang2>5]#結果:[1] 6 7 8 注:邏輯值為True就取出相應位置的元素 xiangliang2+5#結果:[1] 10 11 12 13 xiangliang2[2:4]#結果: [1] 6 7 8 取出第二到四的元素 xiangliang2[c(2,3,4)]#上式的另一種方法 #seq(a,b,(length=5))生成一個最小值為a,最大值為b,長度為n的等差數列。注意該數列是向量(seq函數輸出格式為向量) dengcha1=seq(1,10,length=5)#生成一個1到10的等差數列,長度為5 dengcha1 #結果:[1] 1.00 3.25 5.50 7.75 10.00 dengcha2=seq(12,20,by=2)#步長為2 dengcha2 #查看函數用法(彈出解釋界面) ?seq ?c2.矩陣
x=matrix(1:9,3,3)#按照列的順序,生成3*3的矩陣 x結果是:
[,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 View Code y=matrix(1:9,3,3,byrow=T)#按照行的順序,生成3*3的矩陣 y結果是:
[,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9 View Code x=matrix(1:9,3,3)#按照列的順序,生成3*3的矩陣 x y=matrix(1:9,3,3,byrow=T)#按照行的順序,生成3*3的矩陣 y x[,1]#取出矩陣第一列 [1] 1 2 3 x[1,]#取出矩陣第一行 [1] 1 4 7 x[1:2,]#取出矩陣第一二行 # [,1] [,2] [,3] #[1,] 1 4 7 #[2,] 2 5 8 x[3,2]#取出矩陣第三行第二列元素 [1] 63.數據框:形式上和矩陣是一樣的
data.frame(3:5,6:8)結果是:
X3.5 X6.8 1 3 6 2 4 7 3 5 8 View Code x=data.frame(a=2:11,b=3:12)#每行叫做一個樣本(觀測),每列叫做變量 x結果是:
a b 1 2 3 2 3 4 3 4 5 4 5 6 5 6 7 6 7 8 7 8 9 8 9 10 9 10 11 10 11 12 View Code x[9,]#取出數據框第九行 # a b #9 10 11 x[,1]#取出數據框的第一列 [1] 2 3 4 5 6 7 8 9 10 11 x$a#上式的另一種方法 [1] 2 3 4 5 6 7 8 9 10 11 cars#速度與剎車距離組成的數據框(50個樣本) speed dist 1 4 2 2 4 10 3 7 4 4 7 22 5 8 16 6 9 10 7 10 18 8 10 26 9 10 34 10 11 17 11 11 28 12 12 14 13 12 20 14 12 24 15 12 28 16 13 26 17 13 34 18 13 34 19 13 46 20 14 26 21 14 36 22 14 60 23 14 80 24 15 20 25 15 26 26 15 54 27 16 32 28 16 40 29 17 32 30 17 40 31 17 50 32 18 42 33 18 56 34 18 76 35 18 84 36 19 36 37 19 46 38 19 68 39 20 32 40 20 48 41 20 52 42 20 56 43 20 64 44 22 66 45 23 54 46 24 70 47 24 92 48 24 93 49 24 120 50 25 85 View Code iris#鳶尾花組成的數據框(150個樣本) Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa 7 4.6 3.4 1.4 0.3 setosa 8 5.0 3.4 1.5 0.2 setosa 9 4.4 2.9 1.4 0.2 setosa 10 4.9 3.1 1.5 0.1 setosa 11 5.4 3.7 1.5 0.2 setosa 12 4.8 3.4 1.6 0.2 setosa 13 4.8 3.0 1.4 0.1 setosa 14 4.3 3.0 1.1 0.1 setosa 15 5.8 4.0 1.2 0.2 setosa 16 5.7 4.4 1.5 0.4 setosa 17 5.4 3.9 1.3 0.4 setosa 18 5.1 3.5 1.4 0.3 setosa 19 5.7 3.8 1.7 0.3 setosa 20 5.1 3.8 1.5 0.3 setosa 21 5.4 3.4 1.7 0.2 setosa 22 5.1 3.7 1.5 0.4 setosa 23 4.6 3.6 1.0 0.2 setosa 24 5.1 3.3 1.7 0.5 setosa 25 4.8 3.4 1.9 0.2 setosa 26 5.0 3.0 1.6 0.2 setosa 27 5.0 3.4 1.6 0.4 setosa 28 5.2 3.5 1.5 0.2 setosa 29 5.2 3.4 1.4 0.2 setosa 30 4.7 3.2 1.6 0.2 setosa 31 4.8 3.1 1.6 0.2 setosa 32 5.4 3.4 1.5 0.4 setosa 33 5.2 4.1 1.5 0.1 setosa 34 5.5 4.2 1.4 0.2 setosa 35 4.9 3.1 1.5 0.2 setosa 36 5.0 3.2 1.2 0.2 setosa 37 5.5 3.5 1.3 0.2 setosa 38 4.9 3.6 1.4 0.1 setosa 39 4.4 3.0 1.3 0.2 setosa 40 5.1 3.4 1.5 0.2 setosa 41 5.0 3.5 1.3 0.3 setosa 42 4.5 2.3 1.3 0.3 setosa 43 4.4 3.2 1.3 0.2 setosa 44 5.0 3.5 1.6 0.6 setosa 45 5.1 3.8 1.9 0.4 setosa 46 4.8 3.0 1.4 0.3 setosa 47 5.1 3.8 1.6 0.2 setosa 48 4.6 3.2 1.4 0.2 setosa 49 5.3 3.7 1.5 0.2 setosa 50 5.0 3.3 1.4 0.2 setosa 51 7.0 3.2 4.7 1.4 versicolor 52 6.4 3.2 4.5 1.5 versicolor 53 6.9 3.1 4.9 1.5 versicolor 54 5.5 2.3 4.0 1.3 versicolor 55 6.5 2.8 4.6 1.5 versicolor 56 5.7 2.8 4.5 1.3 versicolor 57 6.3 3.3 4.7 1.6 versicolor 58 4.9 2.4 3.3 1.0 versicolor 59 6.6 2.9 4.6 1.3 versicolor 60 5.2 2.7 3.9 1.4 versicolor 61 5.0 2.0 3.5 1.0 versicolor 62 5.9 3.0 4.2 1.5 versicolor 63 6.0 2.2 4.0 1.0 versicolor 64 6.1 2.9 4.7 1.4 versicolor 65 5.6 2.9 3.6 1.3 versicolor 66 6.7 3.1 4.4 1.4 versicolor 67 5.6 3.0 4.5 1.5 versicolor 68 5.8 2.7 4.1 1.0 versicolor 69 6.2 2.2 4.5 1.5 versicolor 70 5.6 2.5 3.9 1.1 versicolor 71 5.9 3.2 4.8 1.8 versicolor 72 6.1 2.8 4.0 1.3 versicolor 73 6.3 2.5 4.9 1.5 versicolor 74 6.1 2.8 4.7 1.2 versicolor 75 6.4 2.9 4.3 1.3 versicolor 76 6.6 3.0 4.4 1.4 versicolor 77 6.8 2.8 4.8 1.4 versicolor 78 6.7 3.0 5.0 1.7 versicolor 79 6.0 2.9 4.5 1.5 versicolor 80 5.7 2.6 3.5 1.0 versicolor 81 5.5 2.4 3.8 1.1 versicolor 82 5.5 2.4 3.7 1.0 versicolor 83 5.8 2.7 3.9 1.2 versicolor 84 6.0 2.7 5.1 1.6 versicolor 85 5.4 3.0 4.5 1.5 versicolor 86 6.0 3.4 4.5 1.6 versicolor 87 6.7 3.1 4.7 1.5 versicolor 88 6.3 2.3 4.4 1.3 versicolor 89 5.6 3.0 4.1 1.3 versicolor 90 5.5 2.5 4.0 1.3 versicolor 91 5.5 2.6 4.4 1.2 versicolor 92 6.1 3.0 4.6 1.4 versicolor 93 5.8 2.6 4.0 1.2 versicolor 94 5.0 2.3 3.3 1.0 versicolor 95 5.6 2.7 4.2 1.3 versicolor 96 5.7 3.0 4.2 1.2 versicolor 97 5.7 2.9 4.2 1.3 versicolor 98 6.2 2.9 4.3 1.3 versicolor 99 5.1 2.5 3.0 1.1 versicolor 100 5.7 2.8 4.1 1.3 versicolor 101 6.3 3.3 6.0 2.5 virginica 102 5.8 2.7 5.1 1.9 virginica 103 7.1 3.0 5.9 2.1 virginica 104 6.3 2.9 5.6 1.8 virginica 105 6.5 3.0 5.8 2.2 virginica 106 7.6 3.0 6.6 2.1 virginica 107 4.9 2.5 4.5 1.7 virginica 108 7.3 2.9 6.3 1.8 virginica 109 6.7 2.5 5.8 1.8 virginica 110 7.2 3.6 6.1 2.5 virginica 111 6.5 3.2 5.1 2.0 virginica 112 6.4 2.7 5.3 1.9 virginica 113 6.8 3.0 5.5 2.1 virginica 114 5.7 2.5 5.0 2.0 virginica 115 5.8 2.8 5.1 2.4 virginica 116 6.4 3.2 5.3 2.3 virginica 117 6.5 3.0 5.5 1.8 virginica 118 7.7 3.8 6.7 2.2 virginica 119 7.7 2.6 6.9 2.3 virginica 120 6.0 2.2 5.0 1.5 virginica 121 6.9 3.2 5.7 2.3 virginica 122 5.6 2.8 4.9 2.0 virginica 123 7.7 2.8 6.7 2.0 virginica 124 6.3 2.7 4.9 1.8 virginica 125 6.7 3.3 5.7 2.1 virginica 126 7.2 3.2 6.0 1.8 virginica 127 6.2 2.8 4.8 1.8 virginica 128 6.1 3.0 4.9 1.8 virginica 129 6.4 2.8 5.6 2.1 virginica 130 7.2 3.0 5.8 1.6 virginica 131 7.4 2.8 6.1 1.9 virginica 132 7.9 3.8 6.4 2.0 virginica 133 6.4 2.8 5.6 2.2 virginica 134 6.3 2.8 5.1 1.5 virginica 135 6.1 2.6 5.6 1.4 virginica 136 7.7 3.0 6.1 2.3 virginica 137 6.3 3.4 5.6 2.4 virginica 138 6.4 3.1 5.5 1.8 virginica 139 6.0 3.0 4.8 1.8 virginica 140 6.9 3.1 5.4 2.1 virginica 141 6.7 3.1 5.6 2.4 virginica 142 6.9 3.1 5.1 2.3 virginica 143 5.8 2.7 5.1 1.9 virginica 144 6.8 3.2 5.9 2.3 virginica 145 6.7 3.3 5.7 2.5 virginica 146 6.7 3.0 5.2 2.3 virginica 147 6.3 2.5 5.0 1.9 virginica 148 6.5 3.0 5.2 2.0 virginica 149 6.2 3.4 5.4 2.3 virginica 150 5.9 3.0 5.1 1.8 virginica View Code4.列表:主要來存儲一些函數的輸出
x=list(a=6:9,b=10:13,c=c("天津","商業")) x結果是:
$a [1] 6 7 8 9$b [1] 10 11 12 13$c [1] "天津" "商業" View Code x$a#取出第一個變量(屬于向量) [1] 6 7 8 9 x[[1]]#和上式效果一樣,用兩個中括號說明返回值的類型和a的類型是一樣的,所以不能x[1]這樣用 x$b[2]#取出b元素(向量)中的第二個元素 [1] 11三、
1. if語句
#例1 x=66 if(x>=60){y=1}else{y=0} #}esle必須和上邊換行且放在一行 y #[1] 1#例2 if(x>=60){z=10} z #[1] 10#例3 x=90 if(x>=60){if(x>=70){if(x>=80){if(x>=90){y=4}else{y=3}}else{y=2}}else{y=1}}else{y=0} y #[1] 4?2. for循環
x=numeric(100)#生成100維的零向量 x #結果: #[1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 # [37] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 # [73] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0#i表示的是位置,for循環是知道循環的圈數的 for(i in 1:100){x[i]=2} x #結果: # [1] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 # [37] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 # [73] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2?3. while循環
#while循環不知道循環的圈數的 x=numeric(100) i=1#i稱為循環控制變量 while(i<=50){x[i]=2i=i+1#i+=1不適合R } x #結果: # [1] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 # [37] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 # [73] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0四、文件的讀取??
數據中每一行叫做一個觀測或者一個樣本,每一列叫做一個變量
編譯器改變默認路徑方法:點擊文件選項------》改變工作目錄
1.讀文件
c=read.csv("d:/111.csv",header=T)#header=T表示將表頭讀進去,同時把表頭作為變量的名字 c t=read.table("d:/111.txt",header=T) t #注意:用的是雙引號和反斜杠/,也可以用兩個正斜杠\\,如"d:\\111.csv"結果:
學號 成績 1 1 58 2 2 59 3 3 60 4 4 61 5 5 62 6 6 63 7 7 64 8 8 65 9 9 66 10 10 67 View Code2.寫文件
c=read.csv("d:/111.csv",header=T) write.table(c,"d:/333.text")五、自定義函數以及函數的編寫
#輸入x,y,輸出(x+y),給函數起一個名字f f=function(x,y){return(x+y)} f(2,3)#[1] 5sin(0) #R中函數三個要素:輸入,輸出,函數名?介紹一些重要函數:https://www.cnblogs.com/xihehe/p/7473981.html? (一定要看)
cars apply(cars,2,mean)#按列求均值 注:apply函數用于矩陣的運算結果:
> carsspeed dist 1 4 2 2 4 10 3 7 4 4 7 22 5 8 16 6 9 10 7 10 18 8 10 26 9 10 34 10 11 17 11 11 28 12 12 14 13 12 20 14 12 24 15 12 28 16 13 26 17 13 34 18 13 34 19 13 46 20 14 26 21 14 36 22 14 60 23 14 80 24 15 20 25 15 26 26 15 54 27 16 32 28 16 40 29 17 32 30 17 40 31 17 50 32 18 42 33 18 56 34 18 76 35 18 84 36 19 36 37 19 46 38 19 68 39 20 32 40 20 48 41 20 52 42 20 56 43 20 64 44 22 66 45 23 54 46 24 70 47 24 92 48 24 93 49 24 120 50 25 85 > apply(cars,2,mean)#按列求均值 speed dist 15.40 42.98 View Code小知識:R中主要函數來進行統計計算,很多函數放在包里面的,而包是需要安裝的。包安裝完之后,必須加載,然后可以使用其中的函數。安裝包之前需要提前設置鏡像為中國的,步驟:點擊編譯器中的程序包選項,設定CRAN鏡像,選擇中國的;然后在編輯器中輸入 install.packages("包的名字"),再輸入 library(包的名字)進行加載包
install.packages("quantreg") library(quantreg)?R 一般把數據放到內存中再來處理,但是缺點就是內存如果只有1G大小,R只能最多處理1G大小的數據
library(MASS)#MASS是自帶的包 #quine#5個自變量,146個樣本的數據 #?quine#查看該數據的用處quine[,5]#引用第五列 quine$Days#引用第五列 attach(quine)#attach函數把數據框quine放到內存 #當把數據框放進內存中,可以簡便的引用 Days#引用第五列,不用像上述兩種引用第五列方法那樣麻煩?
library(MASS)#MASS是自帶的包 str(quine)#str函數用來查看數據類型?結果:
'data.frame': 146 obs. of 5 variables:$ Eth : Factor w/ 2 levels "A","N": 1 1 1 1 1 1 1 1 1 1 ...$ Sex : Factor w/ 2 levels "F","M": 2 2 2 2 2 2 2 2 2 2 ...$ Age : Factor w/ 4 levels "F0","F1","F2",..: 1 1 1 1 1 1 1 1 2 2 ...$ Lrn : Factor w/ 2 levels "AL","SL": 2 2 2 1 1 1 1 1 2 2 ...$ Days: int 2 11 14 5 5 13 20 22 6 6 ...data.frame:數據框?? obs:觀測?? variables:變量
Factor指的是分類變量類型。也叫因子類型
2 levels "A","N":兩類,分為A種族和N種族
library(MASS)
attach(quine)
#計算女生,男生曠課的天數
tapply(Days,Sex,mean) #tapply分類匯總函數
#結果
# F M
#15.22500 17.95455
str(tapply(Days,Sex,mean))#查看類型
#tapply返回值類型為向量
# num [1:2(1d)] 15.2 18 #二維向量
# - attr(*, "dimnames")=List of 1
# ..$ : chr [1:2] "F" "M"
?R中關于隨機數的生成的函數:均勻分布,指數分布,正太分布
r+分布的名字:該分布的隨機數
d+分布的名字:該分布的密度函數值
p+分布的名字:該分布的分布函數值
q+分布的名字:該分布的分位點的值
?
?示例如下:
#生成10個來自N(0,4)的隨機數 rnorm(10,0,2)#標準差是2 方差是4 #結果: # [1] -1.2890521 -0.2594150 -0.2050323 -0.8702874 -4.5483221 -0.7911182 # [7] 3.8099254 1.5759880 -0.4671626 0.7049596 #生成5個均勻分布的隨機數 runif(5,1,3) #[1] 1.328076 1.384769 2.338306 1.210036 2.088914 runif(5,1,3)#和上個不同 #[1] 2.457805 1.105783 1.488697 1.458045 1.453241 #如果希望隨機數固定,應當設置種子 set.seed(1) runif(5,1,3)#每次運行的結果相同 #正態分布在x=10這個點的密度函數值 dnorm(10,0,2)#[1] 7.433598e-07 #正態分布的95%的分位點 qnorm(0.95,0,2)#[1] 3.289707?六、畫圖,R的畫圖功能是非常強大的
散點圖和線圖:
描點法畫圖:把所有的橫坐標放在第一個參數,把所有的縱坐標放在第二個參數
#cars 50個樣本,2個變量 plot(cars[,1],cars[,2])?結果:
x=1:10 y=2:11 plot(x,y)#散點圖?結果:
plot(x,y,type="l")#線性圖(折線圖)?結果:
plot(x,y,type="b")#既有直線又有點,但線不穿過點結果:
plot(x,y,type="o")#既有直線又有點,線穿過點?結果:
plot(x,y,type="l",col="blue",lty=2)#lty默認為1是實線,2為虛線,col代表顏色 ?plot#查看plot函數的用法,以及參數設置結果:
?
plot是高級繪圖函數,會自動生成一個圖像界面。低級繪圖函數,不會自動生成一個圖像界面,只可以在高級繪圖函數基礎之上添加圖像
plot(cars[,1],cars[,2])#高級繪圖函數 abline(v=15,lty=2)#在x=15處畫一條豎直的虛線 低級繪圖函數?結果:
plot(cars[,1],cars[,2],cex=0.5)#cex=1為默認狀態,代表了點的大小?結果:
? 直方圖:
cars #hist畫直方圖,屬于高級繪圖函數 hist(cars$dist,ylim=c(0,25))#ylim設置的是縱坐標的圖像顯示范圍,可以不寫 頻數直方圖?結果:
speed dist 1 4 2 2 4 10 3 7 4 4 7 22 5 8 16 6 9 10 7 10 18 8 10 26 9 10 34 10 11 17 11 11 28 12 12 14 13 12 20 14 12 24 15 12 28 16 13 26 17 13 34 18 13 34 19 13 46 20 14 26 21 14 36 22 14 60 23 14 80 24 15 20 25 15 26 26 15 54 27 16 32 28 16 40 29 17 32 30 17 40 31 17 50 32 18 42 33 18 56 34 18 76 35 18 84 36 19 36 37 19 46 38 19 68 39 20 32 40 20 48 41 20 52 42 20 56 43 20 64 44 22 66 45 23 54 46 24 70 47 24 92 48 24 93 49 24 120 50 25 85 View Code hist(cars$dist,freq=F)#頻率直方圖 lines(density(cars$dist),col="blue")#lines低級繪圖函數 density核密度估計?結果:
hist(cars[,2],breaks=10)#組距,直方圖的柱子的數量?結果:
柱狀圖:barplot
library(MASS) attach(quine) table(Sex)#統計分類變量,各類的頻數 本處統計的是男女性別個數 #結果: Sex # F M # 80 66 barplot(table(Sex))a=tapply(Days,Age,mean)#統計各年齡段的平均曠課天數 a #結果: F0 F1 F2 F3 # 14.85185 11.15217 21.05000 19.60606 barplot(a)b=tapply(Days,list(Sex,Age),mean)#統計兩種性別各年齡段的平均曠課天數 b #結果: F0 F1 F2 F3 # F 18.70000 12.96875 18.42105 14.00000 # M 12.58824 7.00000 23.42857 27.21429 barplot(b)?結果:
餅狀圖:pie?? 用來表示每部分占比
a=tapply(Days,Age,mean)#統計各年齡段的平均曠課天數 pie(a)?結果:
莖葉圖:stem??? 用的不多
將數組中的數按位數進行比較,將數的大小基本不變或變化不大的位作為一個主干(莖),將變化大的位的數作為分枝(葉),列在主干的后面,這樣就可以清楚地看到每個主干后面的幾個數,每個數具體是多少。
stem(cars[,2])?結果:
The decimal point is 1 digit(s) to the right of the |0 | 240046782 | 0024666688222444664 | 0026680244666 | 0468068 | 0452310 | 12 | 0 View Code?
#par圖形設備函數 par(mfrow=c(2,1))#畫兩行一列的圖,可更改行列數 按行排序 plot(cars) plot(cars)??結果:
par(mfcol=c(1,2))#畫兩行一列的圖,可更改行列數 按行排序 plot(cars) plot(cars)? 結果:
七、
1.假設檢驗和區間估計
shapiro.test:檢驗樣本是否服從正態分布
原假設是目標樣本服從正態分布,用樣本計算出來的p值>0.05,那么就不能拒絕原假設,目標樣本服從正態分布
set.seed(12) a=rnorm(100,0,1) #檢驗a是否服從正態分布 shapiro.test(a)? 結果:
Shapiro-Wilk normality testdata: a W = 0.98945, p-value = 0.6201 View Codeks.test:檢驗目標樣本是否服從指定的連續型分布
原假設:檢驗目標服從指定的連續型分布,用樣本計算出來的p值>0.05,那么就接收原假設,否則拒絕
set.seed(12) a=rnorm(100,0,1) #檢驗a是否服從N(2,2)的正態分布 分布前邊加p(p+分布的名字:該分布的分布函數值) ks.test(a,"pnorm",2,2)?結果:
One-sample Kolmogorov-Smirnov testdata: a D = 0.60747, p-value < 2.2e-16 alternative hypothesis: two-sided View Codechisq.test:檢驗目標樣本是否服從指定的離散型分布,用法同上
t.test:假設檢驗(t檢驗),區間估計
t檢驗原假設:檢驗正態總體的均值為0( t檢驗在總體方差未知、樣本方差已知的情況使用,總體方差已知用z檢驗);????? t.test函數還可以對總體的均值做區間估計,條件是總體方差未知( t檢驗在總體方差未知、樣本方差已知的情況使用,總體方差已知用z檢驗)
set.seed(12) a=rnorm(100,0,1) #t檢驗 t.test(a) #p值>0.05,接收原假設,a來自的這個總體的均值為0 #95 percent confidence interval:95%的置信區間(注:總體均值的置信區間) ?t.test#置信度通過conf.level修改?結果:
One Sample t-testdata: a t = -0.36029, df = 99, p-value = 0.7194 alternative hypothesis: true mean is not equal to 0 95 percent confidence interval:-0.2028249 0.1404875 sample estimates:mean of x -0.03116866 View Code2.回歸,逐步回歸和回歸分析診斷
回歸:lm函數??? 回歸的統計量:summary函數
a=lm(dist~speed,data=cars)#線性回歸:波浪線左邊是自變量,右邊是應變量 summary(a)#a的統計指標,可以看到a的各種檢驗 #Residuals:殘差 Coefficients:系數 #p值小于5%說明回歸系數顯著,p值越小越拒絕原假設,原假設是回歸方程不顯著 #str(a)#可查看a的結構:列表結構 plot(cars) abline(a)#a的回歸直線?結果:
Call: lm(formula = dist ~ speed, data = cars)Residuals:Min 1Q Median 3Q Max -29.069 -9.525 -2.272 9.215 43.201 Coefficients:Estimate Std. Error t value Pr(>|t|) (Intercept) -17.5791 6.7584 -2.601 0.0123 * speed 3.9324 0.4155 9.464 1.49e-12 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 15.38 on 48 degrees of freedom Multiple R-squared: 0.6511, Adjusted R-squared: 0.6438 F-statistic: 89.57 on 1 and 48 DF, p-value: 1.49e-12 View Code逐步回歸:多元回歸,很多個自變量,計算AIC統計量越小越好?
w=read.table("COfreewy.txt",header=T) w#24行,4列 a=lm(CO~.,data=w)#CO作為自變量,其他作為因變量 summary(a)?結果:
? ? ? ? ? ? ? ? ? ? ? ? ??
#從上述結果中看出Hour的p值>0.05,不顯著,所以可以做逐步回歸 step(a) #AIC統計量=-(參數個數+似然函數的對數),越小越好,表示模型的精簡程度以及模型的預測準確度?結果:
#從上述結果可以看出Hour不參與回歸 b=lm(CO~Wind+Traffic,data=w) summary(b)#Wind和Traffic都很顯著?結果:
?
八、R語言可視化(推薦R繪圖系統)
1.散點圖,折線圖,垂線圖??? plot()
iris str(iris)#Species:Factor(分類變量,也叫因子變量)為非數值,會被編碼,第一個出現的類別會被編碼成1 plot(iris[,2],iris[,1])#散點圖?結果:
> irisSepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa 7 4.6 3.4 1.4 0.3 setosa 8 5.0 3.4 1.5 0.2 setosa 9 4.4 2.9 1.4 0.2 setosa 10 4.9 3.1 1.5 0.1 setosa 11 5.4 3.7 1.5 0.2 setosa 12 4.8 3.4 1.6 0.2 setosa 13 4.8 3.0 1.4 0.1 setosa 14 4.3 3.0 1.1 0.1 setosa 15 5.8 4.0 1.2 0.2 setosa 16 5.7 4.4 1.5 0.4 setosa 17 5.4 3.9 1.3 0.4 setosa 18 5.1 3.5 1.4 0.3 setosa 19 5.7 3.8 1.7 0.3 setosa 20 5.1 3.8 1.5 0.3 setosa 21 5.4 3.4 1.7 0.2 setosa 22 5.1 3.7 1.5 0.4 setosa 23 4.6 3.6 1.0 0.2 setosa 24 5.1 3.3 1.7 0.5 setosa 25 4.8 3.4 1.9 0.2 setosa 26 5.0 3.0 1.6 0.2 setosa 27 5.0 3.4 1.6 0.4 setosa 28 5.2 3.5 1.5 0.2 setosa 29 5.2 3.4 1.4 0.2 setosa 30 4.7 3.2 1.6 0.2 setosa 31 4.8 3.1 1.6 0.2 setosa 32 5.4 3.4 1.5 0.4 setosa 33 5.2 4.1 1.5 0.1 setosa 34 5.5 4.2 1.4 0.2 setosa 35 4.9 3.1 1.5 0.2 setosa 36 5.0 3.2 1.2 0.2 setosa 37 5.5 3.5 1.3 0.2 setosa 38 4.9 3.6 1.4 0.1 setosa 39 4.4 3.0 1.3 0.2 setosa 40 5.1 3.4 1.5 0.2 setosa 41 5.0 3.5 1.3 0.3 setosa 42 4.5 2.3 1.3 0.3 setosa 43 4.4 3.2 1.3 0.2 setosa 44 5.0 3.5 1.6 0.6 setosa 45 5.1 3.8 1.9 0.4 setosa 46 4.8 3.0 1.4 0.3 setosa 47 5.1 3.8 1.6 0.2 setosa 48 4.6 3.2 1.4 0.2 setosa 49 5.3 3.7 1.5 0.2 setosa 50 5.0 3.3 1.4 0.2 setosa 51 7.0 3.2 4.7 1.4 versicolor 52 6.4 3.2 4.5 1.5 versicolor 53 6.9 3.1 4.9 1.5 versicolor 54 5.5 2.3 4.0 1.3 versicolor 55 6.5 2.8 4.6 1.5 versicolor 56 5.7 2.8 4.5 1.3 versicolor 57 6.3 3.3 4.7 1.6 versicolor 58 4.9 2.4 3.3 1.0 versicolor 59 6.6 2.9 4.6 1.3 versicolor 60 5.2 2.7 3.9 1.4 versicolor 61 5.0 2.0 3.5 1.0 versicolor 62 5.9 3.0 4.2 1.5 versicolor 63 6.0 2.2 4.0 1.0 versicolor 64 6.1 2.9 4.7 1.4 versicolor 65 5.6 2.9 3.6 1.3 versicolor 66 6.7 3.1 4.4 1.4 versicolor 67 5.6 3.0 4.5 1.5 versicolor 68 5.8 2.7 4.1 1.0 versicolor 69 6.2 2.2 4.5 1.5 versicolor 70 5.6 2.5 3.9 1.1 versicolor 71 5.9 3.2 4.8 1.8 versicolor 72 6.1 2.8 4.0 1.3 versicolor 73 6.3 2.5 4.9 1.5 versicolor 74 6.1 2.8 4.7 1.2 versicolor 75 6.4 2.9 4.3 1.3 versicolor 76 6.6 3.0 4.4 1.4 versicolor 77 6.8 2.8 4.8 1.4 versicolor 78 6.7 3.0 5.0 1.7 versicolor 79 6.0 2.9 4.5 1.5 versicolor 80 5.7 2.6 3.5 1.0 versicolor 81 5.5 2.4 3.8 1.1 versicolor 82 5.5 2.4 3.7 1.0 versicolor 83 5.8 2.7 3.9 1.2 versicolor 84 6.0 2.7 5.1 1.6 versicolor 85 5.4 3.0 4.5 1.5 versicolor 86 6.0 3.4 4.5 1.6 versicolor 87 6.7 3.1 4.7 1.5 versicolor 88 6.3 2.3 4.4 1.3 versicolor 89 5.6 3.0 4.1 1.3 versicolor 90 5.5 2.5 4.0 1.3 versicolor 91 5.5 2.6 4.4 1.2 versicolor 92 6.1 3.0 4.6 1.4 versicolor 93 5.8 2.6 4.0 1.2 versicolor 94 5.0 2.3 3.3 1.0 versicolor 95 5.6 2.7 4.2 1.3 versicolor 96 5.7 3.0 4.2 1.2 versicolor 97 5.7 2.9 4.2 1.3 versicolor 98 6.2 2.9 4.3 1.3 versicolor 99 5.1 2.5 3.0 1.1 versicolor 100 5.7 2.8 4.1 1.3 versicolor 101 6.3 3.3 6.0 2.5 virginica 102 5.8 2.7 5.1 1.9 virginica 103 7.1 3.0 5.9 2.1 virginica 104 6.3 2.9 5.6 1.8 virginica 105 6.5 3.0 5.8 2.2 virginica 106 7.6 3.0 6.6 2.1 virginica 107 4.9 2.5 4.5 1.7 virginica 108 7.3 2.9 6.3 1.8 virginica 109 6.7 2.5 5.8 1.8 virginica 110 7.2 3.6 6.1 2.5 virginica 111 6.5 3.2 5.1 2.0 virginica 112 6.4 2.7 5.3 1.9 virginica 113 6.8 3.0 5.5 2.1 virginica 114 5.7 2.5 5.0 2.0 virginica 115 5.8 2.8 5.1 2.4 virginica 116 6.4 3.2 5.3 2.3 virginica 117 6.5 3.0 5.5 1.8 virginica 118 7.7 3.8 6.7 2.2 virginica 119 7.7 2.6 6.9 2.3 virginica 120 6.0 2.2 5.0 1.5 virginica 121 6.9 3.2 5.7 2.3 virginica 122 5.6 2.8 4.9 2.0 virginica 123 7.7 2.8 6.7 2.0 virginica 124 6.3 2.7 4.9 1.8 virginica 125 6.7 3.3 5.7 2.1 virginica 126 7.2 3.2 6.0 1.8 virginica 127 6.2 2.8 4.8 1.8 virginica 128 6.1 3.0 4.9 1.8 virginica 129 6.4 2.8 5.6 2.1 virginica 130 7.2 3.0 5.8 1.6 virginica 131 7.4 2.8 6.1 1.9 virginica 132 7.9 3.8 6.4 2.0 virginica 133 6.4 2.8 5.6 2.2 virginica 134 6.3 2.8 5.1 1.5 virginica 135 6.1 2.6 5.6 1.4 virginica 136 7.7 3.0 6.1 2.3 virginica 137 6.3 3.4 5.6 2.4 virginica 138 6.4 3.1 5.5 1.8 virginica 139 6.0 3.0 4.8 1.8 virginica 140 6.9 3.1 5.4 2.1 virginica 141 6.7 3.1 5.6 2.4 virginica 142 6.9 3.1 5.1 2.3 virginica 143 5.8 2.7 5.1 1.9 virginica 144 6.8 3.2 5.9 2.3 virginica 145 6.7 3.3 5.7 2.5 virginica 146 6.7 3.0 5.2 2.3 virginica 147 6.3 2.5 5.0 1.9 virginica 148 6.5 3.0 5.2 2.0 virginica 149 6.2 3.4 5.4 2.3 virginica 150 5.9 3.0 5.1 1.8 virginica > str(iris)#Species:Factor(分類變量,也叫因子變量)為非數值,會被編碼,第一個出現的類別會被編碼成1 'data.frame': 150 obs. of 5 variables:$ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...$ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...$ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...$ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...$ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ... View Code plot(iris[,2],iris[,1],type='l')#折線圖?結果:
plot(cars$speed,cars$dist,type='h')#垂線圖?結果:
plot(iris[,5],iris[,1])#盒裝圖(5個分位點:最大值,最小值,中位點,25%,75%分位點) iris[,5]非數值 #盒裝圖作用是比較不同種類的中位數?結果:
#以第五列分類,畫第一列和第二列構成的散點圖 coplot(iris[,1]~iris[,2]|iris[,5])#分類畫圖?結果:
2 三維圖像? perp()??????????????? 兩個自變量
z=cos(y)/(1+x^2) x=seq(-2,2,len=100) y=cos(x) #二維圖像 plot(x,y) plot(y~x,type="l",xlim=c(-2.5,2.5),ylim=c(-1,2),col='blue')?結果:
x=seq(-5,5,len=100) y=seq(-5,5,len=100) f=function(x,y){cos(y)/(1+x^2)} z=outer(x,y,f)#必須定義一個函數,z經過x和y的外積求值 #三維圖像 persp(x,y,z) persp(x,y,z,thete=30,phi=45,col='blue',expand=0.7)#expand拉長0.7倍,thete和phi用于調整角度?結果:
3 雙縱軸圖像:經濟領域
#1912年開始,每年中每個季度喝醉酒的人數 drunkenness=ts(c(3875,4846,5128,8773,7327,6688,5582,3473,3196,rep(NA,51)),frequency=4,start=1912)#frequency=4,表示4個數代表1年的數,即1個數代表1個季度的值 drunkenness?結果:
> drunkennessQtr1 Qtr2 Qtr3 Qtr4 1912 3875 4846 5128 8773 1913 7327 6688 5582 3473 1914 3196 NA NA NA 1915 NA NA NA NA 1916 NA NA NA NA 1917 NA NA NA NA 1918 NA NA NA NA 1919 NA NA NA NA 1920 NA NA NA NA 1921 NA NA NA NA 1922 NA NA NA NA 1923 NA NA NA NA 1924 NA NA NA NA 1925 NA NA NA NA 1926 NA NA NA NA View Code #1912年開始,每年喝醉酒的人數 drunkenness=ts(c(3875,4846,5128,8773,7327,6688,5582,3473,3196,rep(NA,51)),start=1912)#51個缺省值,ts表示時間序列,frequency默認為1,1個數代表1年的值 drunkenness?結果:
> drunkenness Time Series: Start = 1912 End = 1971 Frequency = 1 [1] 3875 4846 5128 8773 7327 6688 5582 3473 3196 NA NA NA NA NA [15] NA NA NA NA NA NA NA NA NA NA NA NA NA NA [29] NA NA NA NA NA NA NA NA NA NA NA NA NA NA [43] NA NA NA NA NA NA NA NA NA NA NA NA NA NA [57] NA NA NA NA View Code par(mar=c(5,6,2,4))#par圖形設備參數設置,mar指的是與各邊框的距離plot(drunkenness,lwd=3,col='gray',ann=F,las=2)#lwd指的是線寬,gray是灰色,las表示刻度文本方向(可更改為1),ann指的是橫縱軸以及標題(T,F,TRUE,FALSE四個取值) mtext("Drunkenness\nRelated Arrests",side=2,line=3,cex=0.7)#空白處文本,side與line表示調整距離,cex(默認等于1)表示文本大小,0.7為70%大小#高級繪圖函數不能疊加高級繪圖函數,可以疊加低級繪圖函數,但是設置下式則可以 par(new=TRUE)#縱軸坐標的取值范圍長短可能會改變 plot(nhtemp,ann=False,axes=FALSE,lwd=0.6,lty=2)#axes=FALSE表示所有軸都不畫,lty默認值為1表示實線(2,3為虛線) mtext("Temperature(F)",side=4,line=3,cex=0.7) title('Using par(new=TRUE) or par(user=...)')#標題 axis(4)#右邊的軸,與第二個圖相關聯結果:
4 餅狀圖
?pie pie(rep(1, 24), col = rainbow(24), radius = 0.9)#rep(1, 24)將1重復24遍,是個24維向量。radius半徑sales = c(0.12, 0.3, 0.26, 0.16, 0.04, 0.12) names(sales) = c("Blueberry", "Cherry","Apple", "Boston Cream", "Other", "Vanilla Cream")#給數據框的每一列命名 title('銷量比例') pie(sales) # default colours結果:
5 條狀圖(常和雙縱軸圖像配合)
?barplot VADeaths#某地區死亡率 str(VADeaths)#格式均為數值型 num [1:5, 1:4] 11.7 18.1 26.9 41 66 8.7 11.7 20.3 30.9 54.3 ... #第一個圖 barplot(VADeaths) #第二個圖 barplot(VADeaths, beside = TRUE) #第三個圖 barplot(VADeaths, beside = TRUE,col = c("lightblue", "mistyrose", "lightcyan","lavender", "cornsilk"),legend = rownames(VADeaths), ylim = c(0, 100)) title(main = "Death Rates in Virginia", font.main = 4)?結果:
> VADeathsRural Male Rural Female Urban Male Urban Female 50-54 11.7 8.7 15.4 8.4 55-59 18.1 11.7 24.3 13.6 60-64 26.9 20.3 37.0 19.3 65-69 41.0 30.9 54.6 35.1 70-74 66.0 54.3 71.1 50.0 > str(VADeaths)num [1:5, 1:4] 11.7 18.1 26.9 41 66 8.7 11.7 20.3 30.9 54.3 ...- attr(*, "dimnames")=List of 2..$ : chr [1:5] "50-54" "55-59" "60-64" "65-69" .....$ : chr [1:4] "Rural Male" "Rural Female" "Urban Male" "Urban Female" View Code6 ggplot2包,qplol()--------自學
#補充:
plot(cars$speed,cars$dist,type='o') #text()函數可以在每個坐標上添加y的取值 for(i in 1:50){text(cars[i,1],cars[i,2]+5,cars[i,2])}#+5代表向上一點,不用和點重合了,加多少都行,主要為了好看?結果:
?
?
感謝天津商業大學的劉東老師:
書本推薦:薛毅的書,當工具書看,用到哪里查哪里,上邊的都可以查到
畫圖的話,推薦R繪圖系統,當工具書使用,用到哪里查哪里
?
?
?
轉載于:https://www.cnblogs.com/tianqizhi/p/8645700.html
總結
- 上一篇: android上调试H5小工具
- 下一篇: 如何将一个图片转换为一个链接