频数统计函数
split()
?split
ma <- cbind(x = 1:10, y = (-4:5)^2)
split(ma, col(ma)) #按照col(ma)将数据剪切分成两列
ma
class(col(ma)) #"matrix" "array"
names(mtcars)
split(mtcars,mtcars$cyl) #按照cyl列将数据分为 4,6,8三组
class(mtcars$cyl) #"numeric"
head(mtcars)
mtcars$cyl <- as.factor(mtcars$cyl)
split(mtcars,mtcars$cyl)
## 如果数据是连续型变量,用cut函数将数据分割为若干份,进行分类统计
cut(mtcars$mpg,c(seq(10,50,10))) #将数据切割为10等分 输出"factor"
?table #统计每个组合在因子层面的频数统计
table()
table(mtcars$cyl) #4 6 8
# 11 7 14
table(cut(mtcars$mpg,c(seq(10,50,10))) )
# (10,20] (20,30] (30,40] (40,50]
# 18 10 4 0
prop.table(table(mtcars$cyl)) #输入数据类型为table, margin 表示行或者列(1,2) propotation 该函数用于频数比率统计
?prop.table
prop.table(table(mtcars$cyl))*100
library(vcd)
table(Arthritis$Treatment,Arthritis$Improved) #得到二维列联表
with(data=Arthritis,(table(Treatment,Improved)))
?with
with(mtcars, mpg[cyl == 8 & disp > 350]) #等同于
mtcars$mpg[mtcars$cyl == 8 & mtcars$disp > 350]
?xtabs #用公式进行交叉制表 参数formula=~. 根据这几个参数进行计算
xtabs(formula = ~Treatment+Improved,data = Arthritis)
x <- xtabs(formula = ~Treatment+Improved,data = Arthritis)
margin.table(x) #所有的边界表情况
margin.table(x,1) #1行,2列
prop.table(x,1)
margin.table(x,2) #按列进行统计
?addmargins
addmargins(x,1) #列联表及统计
addmargins(x,2)
xtabs(formula = ~Treatment+Improved+Sex,data = Arthritis) #三位列联表
ftable(xtabs(formula = ~Treatment+Improved+Sex,data = Arthritis)) #将三维列联表转化为评估列联表,以便观察
# 或者用table函数统计列联表后,用ftable进行转化
独立性检验函数
独立性检验是根据频数信息判断两类因子彼此相关或者相互独立的假设检验。所谓独立性就是变量之间是独立的,没有关系。
卡方检验,fisher检验,Cochran-Mantel-Haenszel检验
p value
假设检验 假设检验(Hypothesis Testing)是数理统计学中根据一定假设条件由样本推断总体的一种方法。
原假设——没有发生,备择假设—— 发生了
具体做法是:根据问题的需要对所研究的总体做某种假设,记作H0;选取合适的统计量,这个统计量的选取要使得在假设H0成立时,其分布为已知;由实测的样本,计算出统计量的值,并根据预先给定的显著性水平进行检验,做出拒绝或者接受H0的判断。
p-value probability value 通过计算得到的概率值,即在原假设H0为真时,得到最大的或者超出所得到的检验统计量值得概率。
一般设定为0.05,当p<0.05拒绝原假设,p>0.05,不拒绝原假设。
library(vcd)
mytable <- table(ArthritisImproved)
chisq.test(mytable) #卡方检验
?chisq.test #输入为数值型向量护着矩阵,x,y可以都是因子
fd 自由度 =(行数-1)*(列数-1)
卡方检验 属于非参数检验,主要用于比较两个及以上样本率(构成比)以及两个分类变量得关联性分析。根本思想在于比较理论频数与实际频数得吻合程度或拟合优度问题。 在分类资料统计推断中的应用,包括两个率或者两个构成比比较的卡方检验。或者多个率或构成比比较的卡方检验以及分类资料的相关分析。
mytable <- table(Arthritis$Sex,Arthritis$Improved)
chisq.test(mytable)$expected #计算理论值 发现有一个理论值小于5
chisq.test(mytable)$observed #查看观测值
chisq.test(mytable)$parameter #参数
chisq.test(mytable)$statistic #卡方统计值
chisq.test(mytable)$residuals #残差,实际观察值与估计值(拟合值)之间的差。person参差(observed - expected) / sqrt(expected).
chisq.test(mytable)$data.name #数据名
chisq.test(mytable)$method #方法名称,"Pearson's Chi-squared test"
fisher.test(mytable) #fisher确切概率法
?chisq.test
help(package="stats")
?fisher.test
cor.test #配对样本相关性检验
kruskal.test #Kruskal-Wallis秩和测验
kmeans # K-Means Clustering
mantelhaen.test # Cochran-Mantel-Haenszel Chi-Squared Test for Count Data
mcnemar.test #McNemar's Chi-squared Test for Count Data
apropos(".test",mod="function") #检索函数
?mantelhaen.test # Cochran-Mantel-Haenszel Chi-Squared Test for Count Data
#判别分层变量是否对观测指标产生影响,消除层次因素干扰,零假设为两个分类变量在调整组间差异后彼此独立。当你有一个2X2列联表的时候可以用卡方检验,但当有多个重复2X2列联表时,可以使用Cochran–Mantel–Haenszel(CMH)来检验这些重复是否相同
Rabbits <-
array(c(0, 0, 6, 5,
3, 0, 3, 6,
6, 2, 0, 4,
5, 6, 1, 0,
2, 5, 0, 0),
dim = c(2, 2, 5),
dimnames = list(
Delay = c("None", "1.5h"),
Response = c("Cured", "Died"),
Penicillin.Level = c("1/8", "1/4", "1/2", "1", "4")))
Rabbits
mantelhaen.test(Rabbits)
相关性分析函数
相关性分析是指对两个或者多个具备相关性得变量元素进行分析从而衡量两个变量因素的相关密切程度。相关性得元素之间需要存在一定的联系或者概率才能进行相关性分析。简单来说,分析变量之间相关性强弱。
先通过独立检验分析,是否有关联,再通过相关性分析,判断关联的强弱。
相关性衡量指标
pearson相关系数,kendall相关系数,偏相关系数,多分格(polychoric)相关系数和多系列(polyserial)相关系数,spearman相关系数。
1. pearson积差相关系数,衡量了两个定量变量之间的线性相关程度。
2. spearman等级相关系数则衡量了分级定序变量之间的相关程度。
3. kendall’Tau相关系数是一种非参数的等级相关度量。
上述三种相关系数可以用cor() 函数进行计算,cov() 函数用来计算协方差。
args(cor) #function (x, y = NULL, use = "everything" #指定缺失值得处理方式, method = c("pearson", "kendall", "spearman")) #查看函数的参数
cor(state.x77)
heatmap(cor(state.x77))
cor(state.x77,method = "spearman") #Spearman相关,又称秩相关、等级相关,是对两变量的秩次大小作线性相关分析,对原始变量的分布不作要求,属于非参数统计方法,适用范围较广.
cov(state.x77) #协方差,协方差在概率论和统计学中用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。协方差表示的是两个变量的总体的误差,这与只表示一个变量误差的方差不同。 如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。 如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。
colnames(state.x77)
x <- state.x77[,c(1,2,3,6)]
y <- state.x77[,c(4,5)]
head(x)
head(y)
cor(x,y)
##
install.packages("ggm")
library(ggm)
# 偏相关系数,是指在控制一个或者多个定量变量时,另外两个定量变量之间的相互关系。
colnames(state.x77)
pcor(c(1,5,2,3,6),cov(state.x77)) #第一个输入值为数值型向量,前两个数值为计算相关关系的下标,其余的为条件下标。第二个参数为协方差结果,控制了收入、文盲率,高中毕业率的影响时,人口与谋杀率之间的相关系数。
相关性的显著性检验
计算相关系数后,对其进行统计学显著性检验,量化。常用原假设为变量间不相关(总体的相关系数=0).用cor.test 函数对单个的pearson,spearman,kendall相关系数进行检验。
args(cor.test)
?cor.test
cor.test(x,y,alternative = ,method = ) #常用参数,其余看说明
# x,y为要检验相关性的变量,alternative用来指定进行双侧检验或者单侧检验(取值包括"two.side","less"(负相关),"greater"(正相关)),method用以指定要计算的相关类型("spearman","kendall","pearson").默认参数为alternative=two.side。
cor.test(state.x77[,3],state.x77[,5])
##置信区间:confidence interval,是指由样本统计量所构成的总体参数的估计区间。在统计学中,一个概率样本的置信区间是对这个样本某个总体参数的区间估计。置信区间展现的是这个参数的真实性有一定概率落在测量结果的周围的程度。置信区间给出的是被测量参数的测量值的可信程度。
library(psych)
?corr.test #在一个矩阵或者数据框的元素之间寻找闲逛行,样本大小,以及p值,一次可进行多个检验。 use=complete,pairwise 前者表示对缺失值执行行删除,后者表示对缺失值执行成对删除
corr.test(x=state.x77,use = "complete") #人口数量和高中毕业率的相关系数(-0.10)并不显著的不为0.(p=0.5)
###偏相关系数显著性检验
pcor.test(r,q,n) #r 是由pcor 函数计算得出的偏相关系数,q为要控制的变量数(以数值表示位置),n为样本大小
?pcor.test #控制一个或者多个额外变量的情况下,两个变量之间的条件独立性
data(marks)
?data
marks
colnames(marks)
var(1:10) #计算公式 (x-mean)^2/(length(x)-1)
m<- mean(1:10)
n <- c(1:10)
length(n)
class(length(n))
?var #方差计算
pcor.test(pcor(c(2,3,1), var(marks)), 1, n=88) #值 tval 学生t检验统计量,df自由度 (行-1)*(列-1),pvalue p值
###t.test
library(MASS)
t.test(Prob~So,data = UScrime)
#数据满足正态分布,可以用方差分析
#参数检验与非参数检验
# 非参数检验:称为nonparametric test,在总体方差未知或知之甚少的情况下,利用样本数据对总体分布形态等进行推断的方法。由于非参数检验方法在推断过程中不涉及有关总体分布的参数,因而得名为:非参数检验“。
#参数检验,parametric tests,是在总体分布形式已知的情况下,对总体分布的参数如均值、方差等进行推断的方法。也就是数据分布已知,比如满足正态分布。
R语言绘图
R语言四大作图系统
基础绘图系统
lattice包 ggplot2包,grid包
ls("package:graphics") #查看包种所含的函数
library(ggplot2)
ls("package:ggplot2") #共计531个函数
help(package="graphics") #查看帮助文档
# R基础绘图系统 高级绘图 一步到位,直接绘制出图
# 低级绘图,不能单独使用,必须在高级绘图产生图形的基础上,对图形进行调整,比如加一条线,加上标题文字等。
### 要清楚输入数据的格式
# 散点图:x和y两个坐标数据
# 直方图:因子
# 热力图:数据矩阵
?plot
plot(women$height) #散点图
plot(women$height,women$weight) #散点图
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) #线性回归
plot(fit)
# S3方法
# 属性
# 泛型函数
# 方法
?methods #寻找s3/s4方法 属性,泛型函数,方法。
methods(plot)
methods(summary)
?par #设置询问图形参数
par() #查看默认参数
plot(as.factor(mtcars$cyl))
plot(as.factor(mtcars$cyl),col=c("red","green","blue"))
自定义函数
# 计算函数
log(x) log10(x) exp(x) sin(x) cos(x) tan(x) asin(x) acos(x)
min(x) max(x) range(x) length(x)
#统计检验
mean(x) sd(x) var(x) median(x) quantile(x) abs(x)
cor(x,y) t.test() lm(y~x) wilcox.test() kruskal.test()
lm(y~f+x) lm(y~x1+x2+x3) bartlett.test() binom.test()
fisher.test() chisq.test() glm(y~x1+x2+x3,binomial) friedman.test()
###只写开头,不加括号,可以查看代码
#R自定义函数
# 内容: 函数名称,函数声明,函数参数,函数体
# 函数名称: 1.函数名称与功能相关。
## 2.可以是字母与数字的组合,但必须是字母开头
# 函数声明 利用function 函数来声明
myfun <- function(选项参数)
{
函数体
}
# 偏度与峰度
# 偏度:(skewness),是统计数据分布偏斜方向与程度的度量,是统计数据分布非对称程度的数字特征。
# 峰度(peakedness;kurtosis),又称为峰度系数。表征概率密度分布曲线在平均值处峰值高低的特征数。
# 循环与向量化操作 函数内部通过循环实现向量化操作
## if 条件判断 for循环 while 循环 switch语句
# 循环三部分
# 1. 条件判断,真或者假
# 2. 用于循环执行的结构
# 3. 表达式
for(i in 1:10){print("Hello,World")}
#while循环
i=1;while (i<=10) {print("Hello World");i=i+1}
#,条件执行语句
score=70;if (score>=60) {print("passwd")
}else
{print("failed")}
ifelse(score>=60,print("Passwd"),print("failed"))