IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> R语言学习笔记 -> 正文阅读

[人工智能]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数据在同一目录下
这样的工作目录就修改好了

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参数只能是14
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)#生成0-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
#use选项看怎么对待缺失项
cor(state.x77)
cov()#计算协方差,计算两个数的误差使用偏相关的时候要使用协方差
cor(x,y)#计算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
#use选项看怎么对待缺失项
cor(state.x77)
cov()#计算协方差,计算两个数的误差使用偏相关的时候要使用协方差
cor(x,y)#计算x和y之间的相关性
library(ggm)
pcor(c(1,5,2,3,6),cov(state.x77))#偏相关是指在控制一个或多个变量时,剩余其他多个变量的关系
cor.test(state.x77[,3],state.x77[,5])#p远小于0.05拒绝原假设,相关系数不为0为0.702
#cor.test有四个选项参数x,y是相关性的选项变量alternative选择检测相关性,
#two.sided,greater less分别代表,检测两种,检测正相关,检测负相关
corr.test(state.x77)
library(ggm)
x<-pcor(c(1,5,2,3,6),cov(state.x77))
pcor.test(x,3,50)#要控制的变量数,样本量
#t检验自由度df和pvalue
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
#use选项看怎么对待缺失项
cor(state.x77)
cov()#计算协方差,计算两个数的误差使用偏相关的时候要使用协方差
cor(x,y)#计算x和y之间的相关性
library(ggm)
pcor(c(1,5,2,3,6),cov(state.x77))#偏相关是指在控制一个或多个变量时,剩余其他多个变量的关系
cor.test(state.x77[,3],state.x77[,5])#p远小于0.05拒绝原假设,相关系数不为0为0.702
#cor.test有四个选项参数x,y是相关性的选项变量alternative选择检测相关性,
#two.sided,greater less分别代表,检测两种,检测正相关,检测负相关
corr.test(state.x77)
library(ggm)
x<-pcor(c(1,5,2,3,6),cov(state.x77))
pcor.test(x,3,50)#要控制的变量数,样本量
#t检验自由度df和pvaluef分组实验的相关性检验,
#药物组合相关性组就是一个很好的对照
#t是student‘t-test
#t检验是用t分布理论推论差异发生的概率
#从而比较两个平均数的差异是否显著
library(MASS)
UScrime
t.test(Prob~So,data=UScrime)
#p<0.05可以拒绝相同概率的假设
#参数检验和非参数检验

非参数检验
非参数检验,称为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)#置信区间默认为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")

不能过度建模,这个是对于数据集的建模而不是实际数据的建模
多元线性回归

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")
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)
#lm遇到变量是因子时就会将一系列对照变量来替换因子
?litter
litter
table(litter$dose)
#单因素的协方差公式y~x+A x是协变量
avo(,data=)
manova(,data=)

功效分析
将数据集减小的分析方法。自己查自己找!
广义线性模型
glm自己查去,就是改变回归分析仅仅能在正态分布的时候使用的情况
Logistic回归

主成分分析
就是将多个变量通过线性组合变成几个比较少的变量来分析。建模自己查,函数自己查
因子分析
将每个变量分解为相同新定义参数的组合,建模自己查函数自己查
购物篮分析
r里面的内置函数集里面有
差不多就这样

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-14 15:56:46  更:2021-12-14 15:58:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 1:18:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码