常用lattice绘图函数
函数
xyplot(y?x)dotplot(y?x)barchart(y?x)stripplot(y?x)bwplot(y?x)histogram(?x)
说明
双变量散点图
Cleveland点图(逐行逐列累加图)y对x的条形图一维图,x必须是数值型,y可以是因子箱线图直方图
106.如何绘制三维图?
参考persp(),contour()函数。这里需要注意的三维绘图中第三维坐标的形式。参考第15页中的outer()函数。
107.想把一个数值的矩阵映射为一个颜色方格的矩阵,什么函数?
参考image()和?lled.contour()函数:
x
2
f
r
z
filled.contour(x,y,z)
108.散点图中散点大小同因变量值成比例如何画?
4
6
8
在R中做这类图很简单,因为R的很多绘图参数可以使用变量:
x1:10
2
y
symbols(x,y,circles=y/2,inches=F,bg=x)109.我想为一个数据框的每一列都做Q–Q图?
使用apply()函数作用于矩阵的行或列,且能避免R中的显式循环
1
table
#
wait
for
changing
3
results=apply(table,2,qqnorm)par(ask=FALSE)
110.如何在一个直方图上添加一个小的箱线图?
25
在直方图的空白位置添加另外的小图(像图例一样),仍然使用参数par():
x
2
hist(x)
op
111.如何在R的绘图中加入数学公式或希腊字符?
A参考?plotmath,熟悉LTEX的用户,会发现二者语法非常类似。
4
x1:10
2
;plot(x,type=\)
text(3,2,expression(paste(\(\,degree,\in2003\)))text(4,4,expression(bar(x)==sum(frac(x[i],n),i==1,n)))text(6,6,expression(hat(beta)==(X?t?X)?{.1}?X?t?y))text(8,8,expression(z[i]==sqrt(x[i]?2+y[i]?2)))112.如何在条形图上显示每个bar的数值?
4
如果明白barplot()函数其实是由低级绘图命令rect()函数构造的,那下面的例子也就不难理解了:
1
x1:10;names(x)
b
3
text(b,x,labels=x,pos=3)113.如何绘制椭圆或双曲线?
根据函数式的基本绘图。直角坐标系下可使用参数方程:
xy
()2+()2=1=?x=asinθ,y=bcosθ,0<θ<2πab
1
t
##
a=1b=2
3
y2?cos(t)
plot(x,y,type=’l’)
114.在word里如何使用R生成的高质量绘图?
矢量绘图的效果是最好的,比如eps、pdf,而不是位图(png、jpg、ti?等)。在word里面,可以使
用eps,虽然在屏幕上显示不是很好,但打印效果却不错。
§I统计模型
115.有没有直接计算峰度和偏度的函数?
26
当然自己写一个也费不了太多时间。FBasics包中提供了
skewness()
2
kurtosis()
可以直接计算偏度和峰度。
116.如何做交叉列联表?
table()函数。table(x)为x的频数表;table(x,y)为交叉列联表。
x
2
prop.table(x,1)117.如何做线性回归模型?
线性模型是最核心的经典统计方法,且至今仍然有广泛应用;很多现代统计方法都是在此基础上发展起来的。最简单的线性回归模型为:
yi=α+βxi+??i
其中α为截距项,β为模型的斜率,??为误差项。lm()函数提供了线性回归的计算方法。
lm.swiss
coe?cients:回归系数(矩阵)
residuals:返回模型残差(矩阵)?tted.values:模型拟合值...:...
可以使用如下命令得到列表名称:
1
names(lm.swiss)
summary()和anova()分别返回回归模型的概要信息和方差分析表。
1
summary(lm.swiss)anova(lm.swiss)
#thesameassummary.lm()
提取模型信息的类函数有很多,其他可以参考R-intro中StatisticalmodelsinR一节。
如果处理数据的量很大,可以使用biglm包中的biglm()函数。这个函数可以用于“海量”数据的回归模拟。
118.如何更新模型?
参考update()函数:
27
summary(f0
2
f1
在R里,可以使用计算逐步回归的step()函数。它以计算AIC信息统计量为准则,选取最小的AIC信息统计量来达到逐步回归的目的。
1
utils::example(lm)step(lm.D9)
step函数可使用“both,forward,backward”三种方法,其默认为“backward”。当然你还可以参考add1,drop1函数。
120.R中如何实现分位数回归(QuantileRegression)
参考quantreg和quantregForest包
data(engel)
2
taus
for(iinseq(along=taus)){
rqs[[i]]
tau=taus[i],data=engel)
lines(log10(engel$income),fitted(rqs[[i]]),col=i+1)}legend(\,paste(\=\,taus),inset=.04,
col=2:(length(taus)+1),lty=1)
121.如何得到一个正态总体均值μ的区间估计?
4
6
8
很简单,t.test()函数
1
x
x
2
matrix(rnorm(100,mean=1,sd=0.3),ncol=2))cl
plot(x,col=cl$cluster,pch=3,lwd=1)points(cl$centers,col=1:2,pch=7,lwd=3)
segments(x[cl$cluster==1,][,1],x[cl$cluster==1,][,2],
28
4
6
cl$centers[1,1],cl$centers[1,2])
8
segments(x[cl$cluster==2,][,1],x[cl$cluster==2,][,2],
cl$centers[2,1],cl$centers[2,2],col=2)
10
层次聚类(hclust()):
n
2
(x
#print()
method=\)method=\)
4
hc2
layout(matrix(c(1,1,2,3),nrow=2,byrow=T))plot(hc1);plot(hc2);plot(hc3)
6
聚类过程中我们可能只需要对象的分类信息,那么使用cutree()函数也是不错的选择:
1
cutree(hc,k=1:3)
当然还有专做聚类的包:cluster
1
library(cluster)
clusplot(x,pam(x,2)$clustering)123.如何做主成分分析?stats包中的princomp函数。
(pc.cr
2
plot(pc.cr,type=\
)
#
or
screeplot
#or”barplot”
4
loadings(pc.cr)
princomp()中的参数cor=TRUE表示使用样本相关矩阵作主成分分析,反之使用样本协方差矩
阵。loadings()返回因子荷载。screeplot()绘制碎石图。
124.怎样做因子分析?
在R中,使用factanal()函数对矩阵进行极大似然因子分析。
example(factanal)
125.如何对样本数据进行正态检验?
比较常见的方法:shapiro.test(),ks.test()(Kolmogorov-Smirnov检验),jarque.bera.test()(需要tseries包)。或者参考专门用作正态检验的normtest包,fBasics包中的相关函数。这几个包(包括基础包)大概提供了十几种检验函数。
29