3.22统计和作图(statistics and graphic)
1quantile(x)函数为四等分点的边界数值
也可自己设置等分点,如
quantile(x,seq(0,1,0.1)),为十分
2、对于缺损值的处理,一定要加入,na.rm=T的参数设定
mean(vetor1,na.rm=T)
[1] 340.168
3对于一个向量的基本统计如中值,最大最小,平均值,可以用summary()
4直方图hist(x,breaks=a)其中a可以<-c(0,1,4,20)枚举一些向量值
n <- length(x)
plot(sort(x),(1:n)/n,type="s",ylim=c(0,1))
5、Q-Q plot 函数形式qqnorm(x)
6、对于箱式图boxplot
case:
data(IgM)
par(mfrow=c(1,2))
boxplot(IgM)
boxplot(log(IgM))
par(mfrow=c(1,1))
d对于两个向量的比较
a<-rnorm(50)
b<-rnorm(50)
boxplot(a,b)
7hist(expend.lean,breaks=10,xlim=c(5,13),ylim=c(0,4),col="white")
###其中break代表的是分的group的组数,
8、一个矩阵的产生,并且赋予其行列名字
a<-rnorm(24)
caff.marital<-matrix(a,nrow=4,byrow=T)##按行排列
caff.marital
colnames(caff.marital)<-c(1:6)
rownames(caff.marital)<-LETTERS[1:4]###字母的顺序为大写LETTERS[1:8]格式
caff.marital
##其中的rownames和colnames可以进行括号内双引号枚举
9、柱状图利用的函数是barplot,其中针对的是默认按照列来计算的,如果是行数据,怎进行t转置
beside=T
barplot(prop.table(t(caff.marital),2), legend.text=colnames(caff.marital),col="white", beside=T)
##R语言将无法寻找到空白的位置放legend的内容,会覆盖其中的一个向量,因此,需要用函数locator(),见后面
10、对于t检验可以两个函数形式t.test()和wilcox.test,其中wilcoxon test在有些地方叫做Mann-Whitney test
t test是假定为数据时从正态分布的里面出来的。
t检验可以个出95%置信区间的具体数值,t.test(x,conf.level=0.99,mu=34),mu中给出想要检测的值,缺省值mu=0
conf.level=0.99为给定具体的置信区间。
11、两组数据的显著性t检验,
t.test(expend~stature)###里面包含了种不同的数值obese和lean两种类型,
> energy
expend stature
1 9.21 obese
2 7.53 lean
3 7.48 lean
...
20 7.58 lean
21 9.19 obese
22 8.11 lean
例子:case
expend <- c(rnorm(10))
stature<- c("obese","lean","obese","lean","obese","lean","obese","lean","obese","lean")
d <- data.frame(expend,stature)
t.test(expend~stature)
11、两组数据变化var.test(expend ~ stature),t.test(vetor1~ vetor2,paired = T)
12对于两组数据回归并且做回归线
线性回归为
veotr1<- rnorm(20)
vetor2<- rnorm(20)
plot(vetor1,vetor2)
abline(lm(vetor1~vetor2))
对于已经回归的函数可以除了summary可以提取到概况信息 外,还可以利用fitted()来提取
每个点对应的预测值(在回归最优化的那个方程下,计算的y值),和resid()来提取每个点对应的残差
a<- lm(vetor1~vetor2)
fitted(a)
resid(a)###可以看到结果为每个元素对应的数值,这个可以变换预测值和真实值,并且进行回归分析
####自编函数
vetor1<- rnorm(20)
vetor2<- rnorm(20)
pre_obv_grap<- function(obvx,obvy)
{ regr<- lm(obvy~obvx)
b<- fitted(regr)
plot(b,obvy)
a<- list(b,regr,obvx,obvy)
return(a)
}
pre_obv_grap(vetor1,vetor2)
########特别重要,当一个函数的返回值具有多个的时候,可以在函数里面用
###这样函数内部的返回值的结构将不会变化,可以看到里面的对象list()里面不用““
lines((vetor1[!is.na(vetor1)],fitted(regr)))###主要要利用is.na()函数去除数据中元素缺损的地方
######明天重点关注残差作图page112
##
在R中的指数回归形式可能是,有待进一步验证,再看看glm的帮助
glm(y~x,family=poisson(link=log),data=dataframe)
比如
glm(the.data$y~the.data$x+the.data$b)
可以写成
glm(y~x+b,data=the.data)
指数函数其实是非线性的,但是又是内在线性的,因为指数函数可以通过两端log之后变为线性函数,所以可以用glm线性模型做回归,poisson族里默认的link就是log,就是ln,得到的参数a,b可以直接写入函数y=exp(ax+b)中
x=c(1, 1, 2, 2, 2, 3, 3, 4, 5)
y1=c(2.718,2.718,7.387524,7.387524,7.387524,20.07929023,20.07929023,54.57551085,148.3362385)
glmexpo=glm(y1~x, family=poisson)
summary(glmexpo)
意思就是通过这个回归出来的a,b对应的函数形式是y=exp(ax+b)而不是y=aln(x)+b的
resid(glmexpo)
回归函数R^2和P值的调用和获取的获取通过三步计算可以得到
1.计算模型残差平方和RSS. @#####函数resid()###里面要跟回归函数,这个回归函数就是指数或者其他的就可以选择
2.计算Y的样本方差SSY。 ####函数var()
3.R^2=1-(RSS/SSY)
####计算线性回归函数的R平方的函数,等同于cor(y,x)
R_squa<- function(y,x)###请输入两个变量其中如果换回归模型,如指数回归模型,则lm()函数变化
{
RSS<- sum(resid(lm(y~x))^2)###计算x,y线性回归的残差平方和
SSY<- sum((y)^2-mean(y)^2)###计算y值和平均值平方差的和
R_squa<- 1-(RSS/SSY)
return(R_squa)
}
a<- read.csv("j1.csv",header= TRUE, row.names= 1)
jjj<- R_squa(a$ty,a$d)
jjj
###测试关于指数回归的函数形式,明天继续研究?
R_squa2<- function(y,x)###请输入两个变量其中如果换回归模型,如指数回归模型,则lm()函数变化
{
y<- log(y)
RSS<- sum(resid(lm(y~x))^2)###计算x,y线性回归的残差平方和
SSY<- sum(y^2-(mean(y))^2)###计算y值和平均值平方差的和
R_squa<- 1-(RSS/SSY)
return(R_squa)
}
a<- read.csv("j1.csv",header= TRUE, row.names= 1)
jjj<- R_squa2(a$ty,a$d)
jjj
summary(lm(a$ty~a$d))
0.3174286#####明天印证excel,并且对a,和b,值进行反推
a<- read.csv("j1.csv",header= TRUE, row.names= 1)
y<- log(a$ty)
x<- a$d
RSS<- sum(resid(lm(y~x))^2)###计算x,y线性回归的残差平方和
SSY<- sum(y^2-(mean(y))^2)###计算y值和平均值平方差的和
R_squa<- 1-(RSS/SSY)
RSS<- sum(resid(glm(a$ty~a$d,family=poisson))^2)
Excel是这样拟合的,对拟合模型Y=a*ebX,先将模型转化为 ln(Y)=ln(a)+bX,然后对这个方程式用最小二乘法进行线性拟合。
###用Linest帮助中R2定义来解决,引文如下:
####回归分析时,Microsoft Excel 计算每一点的 y 的估计值和实际值的平方差。这些平方差之和称为残差平方和 (ssresid)。然后 Microsoft Excel 计算总平方和 (sstotal)。当 const = TRUE 或被删除时,总平方和是 y 的实际值和平均值的平方差之和。当 const = FALSE 时,总平方和是 y 的实际值的平方和(不需要从每个 y 值中减去平均值)。回归平方和 (ssreg) 可通过公式 ssreg = sstotal - ssresid 计算出来。残差平方和与总平方和的比值越小,判定系数 r2 的值就越大,r2 是表示回归分析公式的结果反映变量间关系的程度的标志。r2 等于 ssreg/sstotal。
那么可以用公式计算ssreg和sstotal,然后可以得到R2
22.关于两个向量获取并调用其检验值P值的办法
sum.rst<- summary(lm(y~d))
p_value<- sum.rst$coefficients[length(sum.rst$coefficients)]
p_value
##计算提取回归p值的函数,记住是线性回归
p_value<- function(y,x)##输入两个向量
{
sum.rst<- summary(lm(y~x))
p_value<- sum.rst$coefficients[length(sum.rst$coefficients)]
return(p_value)
}
https://blog.sciencenet.cn/blog-474707-429136.html
上一篇:
R语言学习笔记(二)Introductory statistics whith R -Peter Da下一篇:
怎么样在R语言中绘制二次或者是其他非线性的函数曲线