目的通过数据分析信息。 数据挖掘 数据分析过程越准确,决策过程就越正确。 六步骤 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数据在同一目录下 这样的工作目录就修改好了
list.files()可以查看目录下的软件
如果使用当前系统命令查看则需要退出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
History函数可以查看历史记录
History();
ls();
getwd()
setwd(dir = "C:/Users/LENOVO/Desktop/R")
getwd()
list.files()
dir()
1+2
x<-3
x
x=3
x
5->x
x<-sum(1,2,3,4,5)
x
ls()
ls.str()
str(x)
ls(all.names = TRUE)
rm(x)
rm(list=ls())
history()
Save.image()可以保存工作空间 可以保存数据图形函数而不是函数 q()退出系统函数; ctrl+enter快速执行 R有5000个包 R包的学习比R本身还复杂 安装包 install.packages(“vcd”) .libPaths()看库的路径 library()可以显示库里面有哪些包 install.packages(c(“”,””,””))
要使用函数可以使用library()已经安装好了不需要再安装包了
也可以使用require()加载包使用包
help(package=””)
data(package=””)可以查看包中拥有的数据集
detach(package:)删除包
remove.package(“”)彻底删除包
installed.packages()可以查看当前拥有包 Rcade<-installed.packages()[,1]第一列函数名称
save(Rcade,file=”Rcade.rdata”)
for(i in Rcade)install.packages(i)
help(sum)也可以直接使用?包查看
args(plot)
直接查看函数的参数
example(函数)
可以直接查看函数的示例
demo()看图的好像
vignette("")可以查看文档,但不是每个包都有这种文档
??qplot
help.search(“”)模糊搜索
apropos("sum",mod="function")查找
RSitesearch("")访问官网搜索
内置数据集 就是一些数据给你用来练习 在安装时默认安装的包datasets中 help(package=“datasets”) data()不加任何参数列出很多数据集
help(package="datasets")
data()
rivers
rivers<-c(1,2,3)
``
将数据集river置换掉
要从新使用river
data("rivers")从新加载
names(euro)看属性
state<-data.frame(state.area,state.abb)
state
数据框,一列一列的组合
heatmap(volcano)
直接使用内置矩阵绘制热图
data(package="MASS")可以看包中的数据集
注意咯这里DATA可能是函数重载。
data(package=.packages(all.available = TRUE))查看R中所有可用数据集
其中的数据集可以直接使用data(“”)函数进行加载只加载数据集而不是整个R包i
data(Aids2,package="MASS")
Aids2
加载包中的数据集
两个加载有所不同,一个可用,一个需要加载包后才可用。
```csharp
x<-1:10
rm(list=ls())
x+1
x-3
x<-x+1
x
y<-seq(1,100,length.out=10)
y
x+y
x*y
x
y
x**y
x%%y
y%/%x
z<-c(1,2,3)
x+z
x>y
c(1,2,3)%in%c(1,2,2,4,5,6)
x==y
x<--5:5
x
abs(x)
sqrt(x)
sqrt(25)
log(16,base=2)
log(16)
log10(16)
exp(x)
ceiling(c(-2.3,3.1415))
floor(c(-2.3,3.1415))
trunc(c(-2.3,3.1415))
round(c(-2.3,3.1415),digits = 2)
signif(c(-2.3,3.1415),digits = 2)
sin(x)
cos(x)
range(c(1:100))
var(c(1:100))
prod(c(1:100))
median(c(1:100))
quantile(c(1:100),c(0.4,0.6,0.8))
which.max(c(1:100))
which(c(1:100)==5)
which(c(1:100)>5)
矩阵 matrix
?array
dim1<-c("A1","A2")
dim2<-c("B1","B2","B3")
dim3<-c("C1","C2","C3","C4")
x<-array(1:24,c(2,3,4),dimnames = list(dim1,dim2,dim3))
x
Titanic
m<-matrix(1:20,4,5,byrow=T)
m
m[1,2]
m[1,c(2,3,4)]
m[c(2:4),c(2,3)]
m[2,]
m[2]
m[-1,2]
dimnames(m)<-list(cnames,rnames)
m
rnames<-c("C1","C2","C3","C4","C5")
cnames<-c("R1","R2","R3","R4")
m["R1","C2"]
head(state.x77)
state.x77[,"Income"]
m+1
m+m
n<-matrix(1:20,5,4)
m+n
t<-m[1,]
t
sum(t)
colSums(m)
rowSums(m)
colMeans(m)
rowMeans(m)
n*t
n<-matrix(1:9,3,3)
t<-matrix(2:10,3,3)
n%*%t
diag(n)
t(m)
m
列表
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 这些水平值构成的向量称为因子
rm(list=ls())
table(mtcars$cyl)
f<-factor(c("red","red","green","blue","green","blue","blue"))
f
fcy1<-factor(mtcars$cyl)
plot(fcy1)
plot(mtcars$cyl)
num<-1:100
cut(num,c(seq(0,100,10)))
state.division
class(state.region)
f<-factor(c("red","red","green"),ordered = T,levels = c("red","green"))
f
缺失数据 完全随机缺失,数据缺失于已观测值和未观测值都不相关,则数据为完全随机缺失(MCAR)如果变量都是MCAR,那么可以将数据完整的实例看做是对更大数据集的一个简单随机抽样 随机缺失 与其他观测变量相关,如你观测体重较小的动物可能又做梦时长的缺失值(可能因为较小的动物较难观察),“缺失”与做梦时长无关可以认为MAR 非随机缺失,做梦时长越短的动物更有可能又做梦数据的缺失,可能由于难以测量较短的事件NMAR NA代表缺失值,notavailable的简称,用来存储缺失信息 NA不是0
rm(list = ls())
1+NA
NA==0
a<-c(NA,1:50)
sum(a,na.rm = TRUE)
is.na(a)
install.packages(VIM)
library(vIM)
colSums(sleep)
rowSums(sleep)
?na.omit
d<-na.omit(a)
d
na.omit(sleep)
删除行,如果超过一半会赵成影响有专门的包研究缺失值
NA是存在的值,但是不知道是多少 NAN是不存在的 Inf存在,是无穷大表示不可能的值 字符串
rm(list=ls())
nchar("hello,world")
month.name
nchar(month.name)
length(month.name)
nchar(c(12,2,3))
paste("everybody","love","stats")
paste("everybody","love","stats",sep="-")
names<-c("Moe","Larry","Curly")
paste(names,"loves state")
temp<-substr(x=month.name,start = 1,stop=3)
toupper(temp)
tolower(temp)
gsub(正则表达式1,正则表达式2,perl=T)
x<-c("b","A+","AC")
grep(,,fixed = T)
match("AC",x)
%in%
path<-"/user/local/bin/R"
strsplit(path,"/")
face<-1:13
suit<-c("spades","clubs","hearts","diamonds")
outer(face,suit,FUN=paste)
日期和时间 1丶对时间序列的描述 2丶利用前面的结果进行预测
rm(list = ls())
sunspots
class(presidents)
a<-"2017-01-01"
as.Date(a)
class(a)
as.Date(a,format="%Y-%m-%d")
class(as.Date(a,format="%Y-%m-%d"))
?strftime
seq(as.Date("2017-01-01"),as.Date("2017-07-05"),by=5)
sales<-round(runif(48,min=50,max=100))
sales
ts(sales,start = c(2010,5),end=c(2014,4),frequency=1)
ts(sales,start = c(2010,5),end=c(2014,4),frequency=4)
ts(sales,start = c(2010,5),end=c(2014,4),frequency=12)
获取数据 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)))) 懒得加注释了! 写入文件
?write
?write.table
?write.csv
getwd()
write.table(x,file=newfile.txt)
write.table(x,file=newfile.csv,sep="\t")
write.table(x,file=newfile.csv,sep="\t",quote = False,append=FALSE,na="NA")
write.table(x,file=gzfile (newfile.csv.gz),sep="\t",quote=FALSE,append = FALSE,na="NA")
library(foreign)
write.arff()
write.table(x,file="c:/Users/wangtong/Desktop/newfile.csv",sep=",",row.names = FALSE)
#quto表示读入时候不需要加“”append参数表示是否追加写入,否则是覆盖
读写Excel文件
```go
read.csv("input.csv",header = T)
read.csv("clipboard",header = T,sep="\t")
library(XLConnect)
ex<-loadworkbook("data.xlsx")
readWorksheet(ex,1,startRow=0,startCol=0,endrow=50,endcol=3,hearder=T)
readworksheetfromfile("data.xlsx",sheet=1)
wb<-loadWorkbook("file.xlsx",create=T)
createsheet(wb,"sheet1")
writeWorkbook(wb,data=mtcars,sheet="sheet1")
saveworkbook(wb)
writeworkbooktofile("file1.xlsx",data=iris,sheet="sheet1")
library(xlsx)
help()
x<-read.xlsx("data.xlsx",1,startrow=1,endrow=100)
write.xlsx(x,file="rdata.xlsx",sheetname="sheet1",append=F)
读写R格式文件
.rds保存单个文件对象
.rdata保存多个文件对象
iris
head(iris)
saveRDS(iris,file="iris.RDS")
getwd()
readRDS("iris.RDS")
load("ch03.R")
save(iris,iris3,file="")
save.image()
数据转换 转换数据
library(xlsx)
cars32<-read.xlsx("mtcars.xlsx",sheetIndex=1,head=T)
is.data.frame(cars32)
is.vactor()
is.na()
is.factor()
is.data.frame(state.x77)
dstate.x77<-as.data.frame(state.x77)
is.data.frame(dstate.x77)
as.matrix(data.frame(state.region,state.x77))
methods(is)
x<-state.abb
dim(x)<-c(5,10)
x
x<-state.abb
x<-as.factor(state.abb)
x
as.list(x)
state<-data.frame(x,state.region,state.x77)
state$Income
y<-state["Nevada",]
unname(y)
unlist(y)
截取所需行
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)
去中心化 数据集中的各项数据减去数据集的均值 标准化 数据集中的各项数据减去数据集的均值除以标准差 添加删选排序转换
heatmap(state.x77)
x<-c(1,2,3,6,3)
mean(x)
x-mean(x)
sd(x)
(x-mean(x))/sd(x)
?scale
x<-scale(state.x77,center=T,scale=T)#去中心化和标准化
heatmap(x)
中心化的作用等比例缩小,是热图比较密切,
reshape2 reshape2包对数据格式进行转换
x<-data.frame(k1=c(NA,NA,3,4,5),k2=c(1,NA,NA,4,5),data=1:5)
y<-data.frame(k1=c(NA,2,NA,4,5),k2=c(NA,NA,3,4,5),data=1:5)
merge(x,y,by="k1")
merge(x,y,by="k2",incomparables = NA)#incomparables忽略什么选项
merge(x,y,by=c("k1","k2"))
install.packages("reshape2")#强大的整合数据的工具
library(reshape2)
help(reshape2)
install.packages("reshape2")
library(reshape2)
rm(list = ls())
?melt#宽字符宽字符变为长字符
melt(airquality)
melt(airquality,id.vars=c("month","day"))
aqw<-dcast(aql,month+day~variable)
dcast(aql,month~variable,fun.aggregate=mean,na.rm=T)
head()
?dcast#formula
?acast
names(airquality)<-tolower(names(airquality))
head(airquality)
tidyr dplyr R函数
没啥好说的不同类型使用不同函数,统计函数很多在这里不介绍了
选项参数
1丶输入控制部分;
file:接一个文件
data:一般指要输入一个数据框;
x:表示单独的一个对象,一般都是向量,也可以是矩阵或者列表;
x和y:函数需要两个输入变量;
x,y,z:函数需要三个输入变量
formula:公式;
na.rm:删除缺失值;
...:表示参数可传递;别问我问就是省略或者是多个参数啥的吧
2丶输出控制部分
3丶调节部分
color 选项和明显用来控制颜色
select与选择有关
font 与字体有关
font.axis 就是坐标轴的字体
lty是linetype
lwd是line width
method 软件算法
选项接受哪些参数
main:字符串,不能是向量
na.rm:TRUE或者FALSE
axis:side参数只能是1到4
fig:包含四个元素的向量
数学统计函数 这部分要复习概率统计学 d表示概率密度函数 p表示分布函数 q表示分布函数的反函数 r 参数相同分布的随机数 dnormal正态概率密度函数 pnormal正态分布函数 qnormal正态分位数函数 rnormal正态分布的随机数函数
rnorm(n=100,mean=15,sd=2)
round(rnorm(n=100,mean = 15,sd=2))
binom二项分布 hyper超几何分布 geom几何分布 pois泊松分布
runif(1)
qqnorm(rnorm(n=100,mean=15,sd=2))
runif(50,min=1,max = 100)
set.seed(666)
runif(50)
runif(50)
set.seed(666)
runif(50)
描述性统计函数
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,不拒绝原假设。
library(grid)
library(vcd)
mytable<-table(Arthritis$Treatment,Arthritis$Improved)
chisq.test(mytable)
fisher.test(mytable)
mytable<-xtabs(~Treatment+Improved+Sex,data=Arthritis)
mantelhaen.test(mytable)
相关性分析函数
相关性分析是指对两个或多个具备相关性的变量元素进行分析,从而衡量两个变量因素的相关密切程度。相关性的元素之间需要存在一定的联系或者概率才可以进行相关性分析。简单来说就是变量之间是否有关系
相关系数指的是他们之间相互关联的程度,例如Pearson相关系数丶Spearman相关系数丶Kendall相关系数丶偏相关系数丶多分格(polychoric)相关系数 和多系列(polyserial)相关系数 每种相关系数是如何被定义的有什么优点和使用范围!
cor(state.x77,method = "spearman")
cor(state.x77,method = "Pearson")
cov(state.x77)
x<-state.x77[,c(1,2,3,6)]
y<-state.x77[,c(4,5)]
x
cor(state.x77)
cov()
cor(x,y)
library(ggm)
pcor(c(1,5,2,3,6),cov(state.x77))
相关性检验函数 用cor算出相关性还不够,数值高不是统计学的指标, 还需要通过P值进行相关性的检验。 置信区间:confidence interval,指由样本统计量所构造的总体参数的估计区间。 在统计学中,一个概率样本的置信区间是对这个样本的某个总体参数的区间估计。 置信区间展现的是这个参数的真实值又一定概率落在测量结果的周围程度。 置信区间给出的是被测量参数的测量值的可信程度
cor(state.x77,method = "spearman")
cor(state.x77,method = "Pearson")
cov(state.x77)
x<-state.x77[,c(1,2,3,6)]
y<-state.x77[,c(4,5)]
x
cor(state.x77)
cov()
cor(x,y)
library(ggm)
pcor(c(1,5,2,3,6),cov(state.x77))
cor.test(state.x77[,3],state.x77[,5])
corr.test(state.x77)
library(ggm)
x<-pcor(c(1,5,2,3,6),cov(state.x77))
pcor.test(x,3,50)
cor(state.x77,method = "spearman")
cor(state.x77,method = "Pearson")
cov(state.x77)
x<-state.x77[,c(1,2,3,6)]
y<-state.x77[,c(4,5)]
x
cor(state.x77)
cov()
cor(x,y)
library(ggm)
pcor(c(1,5,2,3,6),cov(state.x77))
cor.test(state.x77[,3],state.x77[,5])
corr.test(state.x77)
library(ggm)
x<-pcor(c(1,5,2,3,6),cov(state.x77))
pcor.test(x,3,50)
library(MASS)
UScrime
t.test(Prob~So,data=UScrime)
非参数检验 非参数检验,称为Nonparametric tests,在总体方差未知或知道甚少的情况 ,利用样本数据对总体分布形态等进行推断的方法。由于非参数检验方法在推断过程中不涉及有关总体分布的参数因此而得名的 参数检验 是在总体分布形式已知的情况下,对总体分布的参数入均值丶方差等进行推断的方法。也就是数据分布已知,比如满足正态分布。 绘图函数 R语言四大作图系统 1丶基础绘图系统 2丶lattice包 3丶ggplot2包 4丶grid包。 R 基础绘图系统 1丶高级绘图 高级绘图是一步到位,可以直接绘制出图; 2丶低级绘图 而低级绘图,不能单独使用,必须在高级绘图产生图形的基础上,对图形进行调整,比如加一条线,加上标题文字等 散点图:x和y两个坐标数据 直方图 因子类型, 热力图 矩阵类型 S3系统,像是重载分配不同名字的函数。
plot(women$height,women$weight)
plot(as.factor(women$height))
plot(mtcars$cyl)
plot(as.factor(mtcars$cyl))
plot(as.factor(mtcars$cyl),mtcars$carb)
plot(mtcars$carb,as.factor(mtcars$cyl))
plot(as.factor(mtcars$cyl),as.factor(mtcars$carb))
plot(women$height~women$weight)
fit<-lm(height~weight,data=women)
fit
plot(fit)
ls("package:graphics")
demo(graphics)
plot(women$height,women$weight)
plot(as.factor(women$height))
plot(mtcars$cyl)
plot(as.factor(mtcars$cyl))
plot(as.factor(mtcars$cyl),mtcars$carb)
plot(mtcars$carb,as.factor(mtcars$cyl))
plot(as.factor(mtcars$cyl),as.factor(mtcars$carb))
plot(women$height~women$weight)
fit<-lm(height~weight,data=women)
fit
plot(fit)
par()
plot(as.factor(mtcars$cyl),col=c("red","green","blue"))
自定义函数 偏度,是统计数据分布偏斜方向和程度的度量,是统计数据分布非对称程度的数字特征。 峰度,又称峰态系数。表征概率密度分布曲线在平均值出峰值高低的特征数
myfun<-function(x,na.omit=FALSE)
{
if(na.omit)
x<-x[!is.na(x)];
其他巴拉巴拉的省略
}
数据分析实战 抽丝拨简, 哪些有影响,哪些主要的哪些次要的哪些是,正影响,哪些是负影响。
线性回归
summary()
fit<-lm(weight~height,data = women)
coefficients(fit)
confint(fit)
confint(fit,level = 0.5)
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")
不能过度建模,这个是对于数据集的建模而不是实际数据的建模 多元线性回归
summary()
fit<-lm(weight~height,data = women)
coefficients(fit)
confint(fit)
confint(fit,level = 0.5)
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")
states<-as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])
fit<-lm(Murder~Population+Illiteracy+Income+Frost,data=states)
summary(fit)
coef(fit)
options(digits = 4)
coef(fit)
mtcars
fit<-lm(mpg~hp+wt+hp:wt,data = mtcars)
summary(fit)
?AIC
fit1<-lm(Murder~Population+Income+Frost,data = states)
fit2<-lm(Murder~Population+Income,data=states)
AIC(fit1,fit2)
library(MASS)
stepAIC(fit,direction = "backward")
library(leaps)
regsubsets(Murder~Population+Illiteracy+Income+Frost,data=states,nbest=4)
回归诊断 这个模型是否是最佳模型? 模型多大程度满足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 如果多元方差变量中存在协变量
library(multcomp)
attach(cholesterol)
table(trt)
aggregate(response,by=list(trt),FUN=mean)
fit<-aov(response~trt,data=cholesterol)
summary(fit)
fit.lm<-lm(response~trt,data=cholesterol)
?litter
litter
table(litter$dose)
avo(,data=)
manova(,data=)
功效分析 将数据集减小的分析方法。自己查自己找! 广义线性模型 glm自己查去,就是改变回归分析仅仅能在正态分布的时候使用的情况 Logistic回归
主成分分析 就是将多个变量通过线性组合变成几个比较少的变量来分析。建模自己查,函数自己查 因子分析 将每个变量分解为相同新定义参数的组合,建模自己查函数自己查 购物篮分析 r里面的内置函数集里面有 差不多就这样
|