##############描述分析#############
#####彻底清除#####
rm(list=ls())
#####描述统计量####
x<-c(1:12);dim(x)<-c(3,4);x
mean<-sum(x)/length(x);mean
mean(x) #总均值
apply(x,1,mean) #各行均值
apply(x,2,mean) #各列均值
#均值和求和
w<-rnorm(15,mean=50,sd=20);w
w[1]<-1000;w
w.mean<-mean(w);w.mean
w.mean<-mean(w,trim=0.1);w.mean #减少输入误差对结果影响(trim取值0至0.5。计算均值前去掉异常值比例)
w[2]<-NA;w
w.mean<-mean(w,trim=0.1,na=TRUE);w.mean #缺失数据处理
#顺序
x<-sample(1:100,20);x
sort(x)
sort(x,decreasing=TRUE)
x[1]<-NA;x
sort(x,na.last=TRUE);sort(x,na.last=FALSE)
#中位数#百分位数
x<-sample(1:100,20);sort(x)
median(x)
quantile(x)
#大汇总
DescriptiveStatistics<-function(x){
n<-length(x)
m<-mean(x)
v<-var(x)
s<-sd(x)
me<-median(x)
cv<-100*s/n #变异系数
css<-sum((x-m)^2) #样本校正平方和
uss<-sum(x^2) #样本未校正平方和
r<-max(x)-min(x) #样本极差
r1<-quantile(x,3/4)-quantile(x,1/4) #四分位差
sm<-s/sqrt(n) #样本标准误
g1<-n/((n-1)*(n-2)*(s^3))*sum((x-m)^3) #样本偏度系数
data.frame("样本量"=n,"样本均值"=m,"样本方差"=v,"样本标准差"=s,"样本中位数"=me,"变异系数"=cv, "样本校正平方和"=css, "样本未校正平方和"=uss,"样本极差"=r,"四分位差"=r1,"样本标准误"=sm,"样本偏度系数"=g1,row.names=1)
}
x<-rnorm(20,mean=20,sd=10)
DescriptiveStatistics(x)
#####数据的分布####
#正态分布
dnorm(x, mean=0, sd=1, log = FALSE) #概率密度函数
pnorm(q, mean=0, sd=1, lower.tail = TRUE, log.p = FALSE) #分布函数
qnorm(p, mean=0, sd=1, lower.tail = TRUE, log.p = FALSE) #给定概率p的下分位点
rnorm(n, mean=0, sd=1) #n个正态分布随机数
rpois(n,lambda) #泊松分布
#直方图
n<-rnorm(20, mean=20, sd=5)
w<-n
hist(w,freq=FALSE)
lines(density(w),col="blue")
x<-10:29
lines(x,dnorm(x,mean(w),sd(w)),col="red")
#经验分布
w
plot(ecdf(w),verticals=TRUE,do.p=FALSE)
x<-10:29
lines(x,pnorm(x,mean(w),sd(w)),col="red")
#QQ图
w
qqnorm(w)
qqline(w)
#茎叶图
x<-c(25, 45, 50, 54, 55, 61, 64, 68, 72, 75, 75,
78, 79, 81, 83, 84, 84, 84, 85, 86, 86, 86,
87, 89, 89, 89, 90, 91, 91, 92, 100)
stem(x)
stem(x,scale=2)
stem(x,scale=.5)
#箱型图
boxplot(x)
a<-rnorm(15,mean=5,sd=1)
b<-rpois(10,5)
boxplot(a,b,notch=T,names=c("a","b"),col=c(2,4))
boxplot(count~spray,data=InsectSprays,col="lightgray")
boxplot(count~spray,data=InsectSprays,notch=TRUE,col=c(2:7),add=TRUE)
#五数总括
fivenum(x)
#####正态性检验与分布拟合检验####
#正态性W检验
w <- c(75.0, 64.0, 47.4, 66.9, 62.2, 62.2, 58.7, 63.5,
66.6, 64.0, 57.0, 69.0, 56.9, 50.0, 72.0)
shapiro.test(w)
shapiro.test(runif(100,min=5,max=99))
#经验分布K-S检验
x<-rt(100,5) #x来自t(5)的随机数
ks.test(x,"pf",2,5) #检验x是否来自总体为F(2,5)分布
#####绘图初步####
df<-data.frame(
Age=c(13, 13, 14, 12, 12, 15, 11, 15, 14, 14, 14,
15, 12, 13, 12, 16, 12, 11, 15 ),
Height=c(56.5, 65.3, 64.3, 56.3, 59.8, 66.5, 51.3,
62.5, 62.8, 69.0, 63.5, 67.0, 57.3, 62.5,
59.0, 72.0, 64.8, 57.5, 66.5),
Weight=c( 84.0, 98.0, 90.0, 77.0, 84.5, 112.0,
50.5, 112.5, 102.5, 112.5, 102.5, 133.0,
83.0, 84.0, 99.5, 150.0, 128.0, 85.0,
112.0))
#plot()
plot(df)
attach(df)
plot(Age~Height)
plot(~Age+Height)
plot(Weight~Age+Height)
#显示多变量数据
pairs(df)
coplot(Weight~Age|Height)
#显示图形
dotchart(VADeaths,main="弗吉尼亚人口死亡率-1940")
dotchart(t(VADeaths),main="弗吉尼亚人口死亡率-1940")
#三维图形
x<-seq(0,2800,400);y<-seq(0,2400,400);z<-scan()
Z<-matrix(z,nrow=8)
contour(x,y,Z,levels=seq(min(z),max(z),by=80)) #等值线图
persp(x,y,Z) #三维曲面
x<-seq(0,2800, 400); y<-seq(0,2400,400)
z<-scan()
1180 1320 1450 1420 1400 1300 700 900
1230 1390 1500 1500 1400 900 1100 1060
1270 1500 1200 1100 1350 1450 1200 1150
1370 1500 1200 1100 1550 1600 1550 1380
1460 1500 1550 1600 1550 1600 1600 1600
1450 1480 1500 1550 1510 1430 1300 1200
1430 1450 1470 1320 1280 1200 1080 940
Z<-matrix(z, nrow=8)
image(x, y, Z)
contour(x, y, Z, levels = seq(min(z), max(z), by = 80))
persp(x, y, Z)
#z = sin(x)*sin(y)
x<-y<-seq(-2*pi,2*pi,pi/15)
f<-function(x,y){sin(x)*sin(y)}
z<-outer(x,y,f)
contour(x,y,z,col="blue") #等值线图
persp(x,y,z,theta=30,phi=30,expand=0.7,col="lightblue")#三维曲面图
#outer函数 #?????????
x <- 1:9; names(x) <- x
# Multiplication & Power Tables
x %o% x
y <- 2:8; names(y) <- paste(y,":",sep="")
outer(y, x, "^")
#绘图命令
add = TRUE #原图上加图
axes = FALSE #去除坐标轴
log="x";log="xy" #对x/xy轴取对数
type="p" #散点图
type="l" #实线图
type="b" #所有点被实线连接
type="o" #实线通过所有点
type="h" #点到x轴的竖线
type="s" #“S”or阶梯型曲线
type="n" #不画任何点和图线
xlab="" #x轴说明
main="" #图说明
sub="" #子图说明
#低水平绘图
points() #加点
lines() #加线
text(x,y,lables=) #在点处加标记
plot(x,y,type="n");text(x,y)
abline() #在图上加直线
abline(a,b);abline(h=y);abline(v=x);abline(lm.obj)
lm.sol=lm(Height~Age,data=df)
attach(df)
plot(Height~Age);abline(lm.sol)
polygon(x,y) #绘制多边形
title(main="Main Title",sub="Sub Title") #图上加题目
axis(side=) #/坐标轴加标记(side=1图的底部,side=2。。。。。)
#####多元数据特征与相关分析####
#二元数据数字特征及相关系数
ore<-function(x,y){
mx<-mean(x);my<-mean(y);s<-cov(x,y);r<-cor(x,y)
cbind(mx,my,s,r)}
A<-round(rnorm(15,mean=2,sd=1),2)
B<-rpois(15,lambda=2)
ore(A,B)
oref<-cbind(A,B);oref ####!!!???如何将A,B转换为数据框格式???
ore.m<-mean(oref);ore.s<-cov(oref);ore.r<-cor(oref)
ore.m
ore.s
ore.r
#鲁宾区间估计(相关系数)
ruben.test<-function(n,r,alpha=0.05){
r_star<-r/sqrt(1-r^2)
u<-qnorm(1-alpha/2)
a<-2*n-3-u^2
b<-r_star*sqrt((2*n-3)*(2*n-5))
c<-(2*n-5-u^2)*r_star^2-2*u^2
y1<-(b-sqrt(b^2-a*c))/a
y2<-(b+sqrt(b^2-a*c))/a
data.frame(n=n,r=r,conf=1-alpha,
L=y1/sqrt(1+y1^2), ###??!!“=”与“<-”不一样!!!
U=y2/sqrt(1+y2^2))
}
ruben.test(15,0.5)
#相关性检验
cor.test(x, y,
alternative = c("two.sided", "less", "greater"),
method = c("pearson", "kendall", "spearman"),
exact = NULL, conf.level = 0.95, ...)
cor.test(A,B)
#多元数据特征与相关分析
rubber<-read.table("E:/Study/研究生/R语言/统计建模与R软件/R原程序/Ch03/rubber.data")
rubber
colMeans(rubber) ###!!!mean(<data.frame>) is deprecated.
cor(rubber)
cor.test(~X1+X2,data=rubber)
cor.test(~X1+X3,data=rubber)
cor.test(~X2+X3,data=rubber)
#以上:X1,X2,X3两两之间均不相关
#基于相关系数的变量分类
rt<-read.table("E:/Study/研究生/R语言/统计建模与R软件/R原程序/Ch03/applicant.data")
head(rt)
AVG<-apply(rt,1,mean)
sort(AVG,decreasing=TRUE)
#####多元数据的图表示方法####
#轮廓图
outline<-function(x, txt=TRUE){
if(is.data.frame(x)==TRUE)
x<-as.matrix(x)
m<-nrow(x);n<-ncol(x)
plot(c(1,n),c(min(x),max(x)),type="n",
main="The outline Graph of Data",
xlab="Number",ylab="Value"
)
for(i in 1:m){
lines(x[i,],col=i)
if(txt==TRUE){
k<-dimnames(x)[[1]][i]
text(1+(i-1)%%n,x[i,1+(i-1)%%n],k)
}
}
}
outline.jian<-function(x, txt=TRUE){ #txt?
if(is.data.frame(x)==TRUE) #判断+转换数据格式
x<-as.matrix(x)
m<-nrow(x);n<-ncol(x) #画图准备,矩阵维度
plot(c(1,n),c(min(x),max(x)),type="n", #画坐标轴
main="The outline Graph of Data",
xlab="Number",ylab="Value"
)
for(i in 1:m){ #画图
lines(x[i,],col=i)
}
}
X<-read.table("E:/Study/研究生/R语言/统计建模与R软件/R原程序/Ch03/course.data")
outline(X)
outline.jian(X)
#星图
X<-read.table("E:/Study/研究生/R语言/统计建模与R软件/R原程序/Ch03/course.data")
stars(X)
stars(X,full=FALSE,draw.segments=TRUE, #半圆,一段一段弧,
key.loc=c(5,0.5),mar=c(2,0,0,0)) #标准星位置,