R语言学习笔记
目的通過數據分析信息。
數據挖掘
數據分析過程越準確,決策過程就越正確。
六步驟
1.數據采集2.數據存儲3.數據分析4.數據挖掘5.數據可視化化6.進行決策
1.數據采集
采集的數據稱為源數據
手工記錄,網絡爬蟲。
2.數據存儲
將數據存儲在數據倉庫中
將數據收集到計算機中。
如將數據存儲在excel,過多使用數據庫
3.數據統計
有的是不是線性的。、
合適的統計方法等
4.用數據挖掘 DataMining
又稱為資料勘探丶數據采礦。
計算科學有關,諸多方法。
同樣的數據不同的人得到不同的結果。
(挖掘機技術哪家強還是山東找藍翔)
5.數據可視化
維度在地圖上顯示
6.用統計結果進行決策。
數據與三個重大思維轉變
1、、。要分析與某事物相關的所有數據,而不是依靠分析少量的數據樣本;
2.我們熱于接受數據的紛繁復雜,而不再追求精確性。
3.不在探求難以捉摸的因果關系而轉而相關性。
尿布和啤酒。故意將需要東西放的很遠。
路遙知馬力,日久見人心。
微信朋友圈與人性格分析
一目了然數據可視化
R語言
為什么要學習R語言。
R語言免費。與S語言類似。基于S語言最開始做生物統計《bioconductor》包;
具有強大繪圖工具。
R的缺點。
1.R軟件不夠規范,不容易上手,需要付出較多的努力,付出大量的學習成本。
擴展包太多了,成本高。擴展包學習比R學習還比較困難
數據存儲
Getwd()獲得工作目錄路徑默認"C:/Users/LENOVO/Documents"默認生成文件放這里
Setwd()設置工作目錄setwd(dir = “C:/Users/LENOVO/Desktop/R”);注意Windows上使用的是\而R中使用的是/如果要用\則需要使用轉義字符.經常與R數據在同一目錄下
這樣的工作目錄就修改好了
如果使用當前系統命令查看則需要退出R才能查看
Dir()命令也可以完成同樣的工作變量無需進行申明變量名不能以數字開頭
<-賦值符號
X<-3
X=3也可以但是在假設檢驗中,會出現=沖突
5->x向右賦值
X<<-5強制賦值給全局變量
Sum(1,2,3,4,5)
Mean(1,2,3,4,5)
X其實是運用print函數
ls.str()是str和ls()共同結合
str(x)可以看值
ls.str()就可以看共同信息
ls(all.names = TRUE)
all.names查看隱藏選項TRUE大寫注意
rm(x)移除某個對象
不可恢復
R中提供list參數
List=ls())
用rm(list=ls())就可以刪除全部對象
Home end可以快速移動光標
快捷鍵ctrl+L
Save.image()可以保存工作空間
可以保存數據圖形函數而不是函數
q()退出系統函數;
ctrl+enter快速執行
R有5000個包
R包的學習比R本身還復雜
安裝包
install.packages(“vcd”)
.libPaths()看庫的路徑
library()可以顯示庫里面有哪些包
install.packages(c(“”,””,””))
installed.packages()可以查看當前擁有包
Rcade<-installed.packages()[,1]第一列函數名稱
??qplot
help.search(“”)模糊搜索 apropos("sum",mod="function")查找 RSitesearch("")訪問官網搜索內置數據集
就是一些數據給你用來練習
在安裝時默認安裝的包datasets中
help(package=“datasets”)
data()不加任何參數列出很多數據集
矩陣
matrix
列表
rm(list = ls()) state.center a<-1:20 b<-matrix(1:20,4) c<-mtcars d<-"This is a test list" a;b;c;d h<-c(1:20) mlist<-list(a,b,c,d) mlist mlist<-list(first=a,second=b,third=c,fourth=d) mlist[1] mlist[c(1,4)] state.center[c("x",'y')] mlist$first state.center$x mlist[[1]] class(mlist[[1]]) mlist[[5]]<-iris mlist mlist<-mlist[-5] mlist mlist[5]<-NULL數據框
rm(list = ls()) state.center a<-1:20 b<-matrix(1:20,4) c<-mtcars d<-"This is a test list" a;b;c;d h<-c(1:20) mlist<-list(a,b,c,d) mlist mlist<-list(first=a,second=b,third=c,fourth=d) mlist[1] mlist[c(1,4)] state.center[c("x",'y')] mlist$first state.center$x mlist[[1]] class(mlist[[1]]) mlist[[5]]<-iris mlist mlist<-mlist[-5] mlist mlist[5]<-NULL state<-data.frame(state.name,state.abb,state.region,state.x77) state attach(state) state.name detach(state) with(state,{sum(state.name))因子
變量的分類
1丶名義型變量
沒有關系
2丶有序型變量
抽象型
3丶連續型變量
百分率 人口數
R中名義型變量和有序性變量稱為因子factor這些分類變量的可能值稱為一個水平level
這些水平值構成的向量稱為因子
缺失數據
完全隨機缺失,數據缺失于已觀測值和未觀測值都不相關,則數據為完全隨機缺失(MCAR)如果變量都是MCAR,那么可以將數據完整的實例看做是對更大數據集的一個簡單隨機抽樣
隨機缺失
與其他觀測變量相關,如你觀測體重較小的動物可能又做夢時長的缺失值(可能因為較小的動物較難觀察),“缺失”與做夢時長無關可以認為MAR
非隨機缺失,做夢時長越短的動物更有可能又做夢數據的缺失,可能由于難以測量較短的事件NMAR
NA代表缺失值,notavailable的簡稱,用來存儲缺失信息
NA不是0
NA是存在的值,但是不知道是多少
NAN是不存在的
Inf存在,是無窮大表示不可能的值
字符串
日期和時間
1丶對時間序列的描述
2丶利用前面的結果進行預測
獲取數據
1丶利用鍵盤來輸入數據
2丶通過讀取存儲在外部文件上的數據
3丶通過訪問數據庫系統來獲取數據
?edit
patienID<-c(1,2,3,4)
data2<-data.frame(patienID=character(0),b=character(0),c=numeric())
data2<-edit(data2)
fix(data2)
install.packages(“RODBC”)
讀入文件
read.table(“input.csv”)
setwd()
x<-read.table(“input.csv”)
head(x)
head(x,n=10)
tail(x)
x<-read.table("",sep=",")
head是否將第一行設置為名稱
skip=5可以從第六行讀取數據
nrows=100讀取前面100行
na.string替換缺失值
stringasfactor=false 是否將這個轉化為因子類型
read.csv 默認sep=,
read.csv2 默認為;
可以用絕對路徑讀取互聯網上的文件
library(XML)
?readHTMLTable
help(package=“foreign’)
x<-read.table(“clipboard”,header=T,sep=”\t")
readclipboard()
read.table(gzfile(“input.txt.gz”))
readLines(“input.csv”,n=5)
scan(“scan.txt”,what=list(character(3),numeric(2,numeric(2))))
懶得加注釋了!
寫入文件
讀寫R格式文件
.rds保存單個文件對象 .rdata保存多個文件對象 iris head(iris) saveRDS(iris,file="iris.RDS") getwd() readRDS("iris.RDS") load("ch03.R") save(iris,iris3,file="") save.image()數據轉換
轉換數據
截取所需行
who<-read.csv("who.csv",header=T) who1<who[c(1:50),c(1:10)] who4<-who[which(who$CountryID>50&who$CountryID<=100)] ?subset ?sample who4<-subset(who,who$CountryID>5&who$CountryID<=100) who4合并所需行與去除重復行
sample(who$CountryID,30,replace = F) who[sample(who$CountryID,30,replace = F),] mtcars[-1:-5,] mtcars[,-1:-5] mtcars$mpg<-NULL head(mtcars) data.frame(USArrests,state.division) ?cbind cbind(USArrests,state.division)#同樣效果同樣適用于矩陣類型 data1<-head(USArrests,20) data2<-tail(USArrests,20) rbind(data1,data2)#不會取出重復項 duplicated(data4)#判斷重復行 data4[duplicated(data4),] data4[!duplicated(data4)] length(rownames(data4[!duplicated(data4),])) unique(data4)#直接去除重復行 rm(list = ls()) sractm<-t[mtcars] ?rev#reveser翻轉用于向量 letters rev(letters) rownames(women) rev(rownames(women)) women[rev(rownames(women)),] women$height women$height*2.54 data.frame(women$height*2.54,women$weight) data.frame(height=women$height*2.54,weight=women$weight) transform(women,height=height*2.54)#任意修改任意列的值 transform(women,cm=height*2.54) ?sort sort(rivers) sort(state.name) rev(sort(rivers)) order(rivers)#返回排序完對應值所在的索引 ?rank mtcars[order(mtcars$mpg,mtcars$disp),]#兩個條件 total<-cbind(WorldPhones,Total=rs) ?apply#apply函數 apply[WorldPhones,MARGIN=1,FUN=sum] apply[WorldPhones,MARGIN=2,FUN=mean]#apply函數,處理運用于數據框或者矩陣 ?lapply lapply(state.center,FUN=length)#運用于列表返回列表 sapply()#返回向量值 tapply#處理因子數據根據因子進行分組每組分別處理第二個參數是INDEX因子類型 state.name tapply(state.name,state.division,FUN=length)去中心化 數據集中的各項數據減去數據集的均值
標準化 數據集中的各項數據減去數據集的均值除以標準差
添加刪選排序轉換
reshape2
reshape2包對數據格式進行轉換
tidyr
dplyr
R函數
數學統計函數
這部分要復習概率統計學
d表示概率密度函數
p表示分布函數
q表示分布函數的反函數
r 參數相同分布的隨機數
dnormal正態概率密度函數
pnormal正態分布函數
qnormal正態分位數函數
rnormal正態分布的隨機數函數
binom二項分布
hyper超幾何分布
geom幾何分布
pois泊松分布
描述性統計函數
myvars<-mtcars[c("mpg","hp","wt","am")] myvars summary(myvars) fivenum(myvars$hp) install.packages("Hmisc") library(Hmisc) describe(myvars) library(pastecs) stat.desc(myvars) stat.desc(myvars,basic=T)#計算基礎值 stat.desc(myvars,desc=T)#計算描述值 中位數,中位數置信區間 stat.desc(myvars,norml=T)#計算一些統計值偏度和風度 library(psych) describe(mtcars[myvars],trim=0.1)#包括去掉頭尾的均值,表示前面百分之幾的數 Hmisc::describe(mtcars) library(MASS) Cars93 head(Cars93) aggregate(Cars93[c("Min.Price","Price","Max.Price","MPG.city")],by=list(Manufacturer=Cars93$Manufacturer),mean) aggregate(Cars93[c("Min.Price","Price","Max.Price","MPG.city")],by=list(Manufacturer=Cars93$Manufacturer),sd) aggregate(Cars93[c("Min.Price","Price","Max.Price","MPG.city")],by=list(Manufacturer=Cars93$Manufacturer,Manufacturer=Cars93$Type),mean) library(doBy) ?summaryBy summaryBy(mpg+hp+wt~am,data=myvars,FUN=c(mean,sd)) describe.by(myvars,list(am=mtcars$am))頻數統計函數
mtcars$cyl<-as.factor(mtcars$cyl) mtcars mtcars$cyl split(mtcars,mtcars$cyl) num<-1:100 cut(num,c(seq(0,100,10))) ?table table(mtcars$cyl) table(cut(num,c(seq(0,100,10)))) prop.table(table(mtcars$cyl)) Arthritis library(grid) library(vcd) table(Arthritis$Treatment,Arthritis$Improved) with(data=Arthritis,table(Treatment,Improved)) ?xtabs x<-xtabs(~Treatment+Improved,data=Arthritis) margin.table(x) margin.table(x,1) margin.table(x,2) addmargins(x,1) addmargins(x,2) y<-xtabs(~Treatment+Improved+Sex,data=Arthritis) ftable(y)獨立性檢驗函數
獨立性檢驗是根據頻數信息判斷兩類因子彼此相關或相互獨立的假設性檢驗。所謂獨立性就是指變量之間的獨立,沒有關系。
一種藥物單獨對男性起作用,單獨對女性起作用就是獨立性,否者就是相關性。
卡方檢驗
Fisher檢驗
Cocharan-Mantel-Haenszel檢驗
假設檢驗是數理統計學中根據一定假設條件由樣本推斷總體的一種方法。
原假設-沒有發生;
備擇假設——發生了;
具體做法是:
根據問題的需要對所研究的總體作某種假設,記作H0;
選取合適的統計量,這個統計量的選取藥使得在假設H0成立時,其分布為已知;
由實測的樣本,計算出統計量的值,并根據預先給定的顯著水平進行檢驗,作出拒絕或接受假設H0的判斷.
p-value就是Probability的值,它是一個通過計算得到的概率值,也就是在原假設為真時,得到最大的或者超出所得到的檢驗統計量值的概率。
一般將p值定位到0.05,當p<0.05拒絕原假設,p>0.05,不拒絕原假設。
相關性分析函數
相關性分析是指對兩個或多個具備相關性的變量元素進行分析,從而衡量兩個變量因素的相關密切程度。相關性的元素之間需要存在一定的聯系或者概率才可以進行相關性分析。簡單來說就是變量之間是否有關系
相關系數指的是他們之間相互關聯的程度,例如Pearson相關系數丶Spearman相關系數丶Kendall相關系數丶偏相關系數丶多分格(polychoric)相關系數
和多系列(polyserial)相關系數
每種相關系數是如何被定義的有什么優點和使用范圍!
相關性檢驗函數
用cor算出相關性還不夠,數值高不是統計學的指標,
還需要通過P值進行相關性的檢驗。
置信區間:confidence interval,指由樣本統計量所構造的總體參數的估計區間。
在統計學中,一個概率樣本的置信區間是對這個樣本的某個總體參數的區間估計。
置信區間展現的是這個參數的真實值又一定概率落在測量結果的周圍程度。
置信區間給出的是被測量參數的測量值的可信程度
非參數檢驗
非參數檢驗,稱為Nonparametric tests,在總體方差未知或知道甚少的情況
,利用樣本數據對總體分布形態等進行推斷的方法。由于非參數檢驗方法在推斷過程中不涉及有關總體分布的參數因此而得名的
參數檢驗
是在總體分布形式已知的情況下,對總體分布的參數入均值丶方差等進行推斷的方法。也就是數據分布已知,比如滿足正態分布。
繪圖函數
R語言四大作圖系統
1丶基礎繪圖系統
2丶lattice包
3丶ggplot2包
4丶grid包。
R 基礎繪圖系統
1丶高級繪圖
高級繪圖是一步到位,可以直接繪制出圖;
2丶低級繪圖
而低級繪圖,不能單獨使用,必須在高級繪圖產生圖形的基礎上,對圖形進行調整,比如加一條線,加上標題文字等
散點圖:x和y兩個坐標數據
直方圖
因子類型,
熱力圖
矩陣類型
S3系統,像是重載分配不同名字的函數。
自定義函數
偏度,是統計數據分布偏斜方向和程度的度量,是統計數據分布非對稱程度的數字特征。
峰度,又稱峰態系數。表征概率密度分布曲線在平均值出峰值高低的特征數
數據分析實戰
抽絲撥簡,
哪些有影響,哪些主要的哪些次要的哪些是,正影響,哪些是負影響。
線性回歸
summary() fit<-lm(weight~height,data = women) coefficients(fit)#截距和系數 confint(fit)#置信區間默認為95%的自信區間 confint(fit,level = 0.5)#設置為50%的置性區間 fitted(fit)#擬合模型的預測值 women$weight-fitted(fit) #殘差 residuals(fit) women women1<-women predict(fit,women1)#用擬合模型對新的進行預測 plot(fit) plot(women$height,women$weight) abline#繪制出擬合曲線 fit2<-lm(weight~height+I(height^2),data=women) fit2 summary(fit2) plot(women$height,women$weight) abline(fit) lines(women$height,fitted(fit2),col="red") fit3<-lm(weight~height+I(height^2)+I(height^3),data=women) fit3 lines(women$height,fitted(fit3),col="blue")不能過度建模,這個是對于數據集的建模而不是實際數據的建模
多元線性回歸
回歸診斷
這個模型是否是最佳模型?
模型多大程度滿足OLS模型的統計假設?
模型是否經得起更多數據的檢驗?
如果擬合出來的模型指標不好,該如何繼續下去?
…
要使用最小二乘法進行OLS模型統計假設
1丶正態性:對于固定的自變量值,因變量值成正態分布。
2丶獨立性:因變量之間相互獨立。
3丶線性:因變量與自變量之間為線性關系。
4丶同方差性:因變量的方差不隨自變量的水平不同而變化。也可稱作不變方差。
R系數安裝包
plot(fit)
生成的四符圖。
第一幅殘差擬合圖,表示因變量和自變量是否成線性關系。圖中的點為殘差值的分布,線為擬合曲線如果貼合度可以說明數據成線性分布
QQ圖用于描述正態性
第三幅圖為位置與尺寸圖,用來描述同方差性
最后一幅圖是殘差與杠桿圖,提供了對單個數據值的觀測,可以看到哪些點偏差較遠。較遠的點為離群點,還可以看到高杠桿點:異常變量的組合和強影響點:影響較大可以用Cook‘distance來鑒別。
模型是否經得起更多數據的驗證呢。
可以使用抽樣法驗證
1丶數據集中有1000個樣本,隨機抽取500個數據進行回歸分析;
2丶模型建好之后,利用predict函數,對剩余500個樣本進行預測,比較殘差值;
3丶如果預測準確,說明模型可以,否則就需要調整模型
方差分析
方差分析,稱為Analysis of Variance,簡稱ANOVA,也稱為“變異數分析”,用于兩個及兩個以上樣本均數差別顯著的性檢驗。從廣義上來講,方差分析也屬于回歸分析的一種。只不過現象回歸的因變量一般是連續變量。而當自變量是因子時,研究關注的重點通常會從預測轉向不同組之間差異的比較。這就是方差分析
R中的因子
計算頻數
獨立性檢驗
相關性檢驗
方差分析
主成分分析
因子分析
方差分析會大量用在科學研究中,例如實驗設計時,進行分組比較,例如藥物研究實驗,處理組與對照組進行比較
方差分析
1丶單因素方差分析ANOVA(組內,組間)
t檢驗和兩組方差分析等價
2丶雙因素方差分析 ANOVA
既含有組間又含有組內
3丶協方差分析 ANCOVA
協變量,方差分析中,包含協變量,就屬于協方差分析
協變量:協助變量?如抑郁癥對焦慮癥有影響
4丶多元方差分析 MANOVA
如果方差研究中包含了多個因變量,那么這種實驗設計就稱為多元方差分析
5丶多元方差分析 MANCOVA
如果多元方差變量中存在協變量
功效分析
將數據集減小的分析方法。自己查自己找!
廣義線性模型
glm自己查去,就是改變回歸分析僅僅能在正態分布的時候使用的情況
Logistic回歸
主成分分析
就是將多個變量通過線性組合變成幾個比較少的變量來分析。建模自己查,函數自己查
因子分析
將每個變量分解為相同新定義參數的組合,建模自己查函數自己查
購物籃分析
r里面的內置函數集里面有
差不多就這樣
總結
- 上一篇: 词法分析器|编译原理|陈火旺
- 下一篇: java销毁servlet_「销毁ses