R假设检验与一元线性回归分析

假设检验  
相关系数 cor(x,y) cor.test(x,y)  相关系数越接近1,x与y越相关
> data("iris")
> plot(iris)
> i1=iris[which(iris$Species=="setosa"),1:2]
> plot(i1)
> cor(i1[1],i1[2])
> cor.test(i1$Sepal.Length,i1$Sepal.Width)
长宽的相关系数在假设检验区间

一元线性回归分析   参考见统计建模与R软件(下册)   线性拟合的时候选择x,x^2 x开根号是通过真实数据的图像决定的,
原理: 最小二乘法最小二乘法
步骤:建立回归模型,求解回归模型中的参数,对回归模型进行检验
h=c(171,175,159,155,151,158)
w=c(57,64,38,35,44,41)
plot(w~h+1)  #w=a+bh
lxy<-function(x,y){
  n=length(x);
  sum(x*y)-sum(x)*sum(y)/n
}
b=lxy(h,w)/lxy(h,h)
a=mean(w)-b*mean(h)
lines(h,a+b*h)
简化
a=lm(w~1+h)
summary(a) #查看详情
汇总数据的解释
Residuals:参差分析数据
Coefficients:回归方程的系数,以及推算的系数的标准差,t值,P-值
F-statistic:F检验值
Signif:显著性标记,***极度显著,**高度显著,*显著,圆点不太显著,没有记号不显著
方差分析,函数anova()
y~1+x或y~x均表示y=a+bx有截距形式的线性模型 通过原点的线性模型可以表达为:y ~ x - 1 或y ~ x + 0 或 y ~ 0 + x
与线性模型有关的函数
建立数据:身高-体重
x=c(171,175,159,155,152,158,154,164,168,166,159,164)
y=c(57,64,41,38,35,44,41,51,57,49,47,46)
建立线性模型a
a=lm(y~x)
求模型系数
coef(a)
提取模型公式
formula(a)
计算残差平方和
deviance(a)
绘画模型诊断图(很强大,显示残差、拟合值和一些诊断情况)
plot(a)
只画残差图(help plot.lm)
plot(a,which=1)
x1=residuals(a)
as.array(x1)
正态性检验
shapiro.test(x1)
计算残差  
residuals(a)
打印模型信息
print(a)
计算方差分析表
anova(a)
提取模型汇总资料 
summary(a)  #Residuals最小最大值,4分位数Coefficients:中则是最为关键的对c和b的相关估计
Estimate是与b,c值的估计,Std. Error 则是回归参数b和c的标准差:sd(b), sd(c)
对回归参数的假设检验: t value是对b,c进行假设检验的t值,以及P-值(用来与显著性水平比较决定是否接受该阿假设检验)Pr(>|t|)。
最后我们还可以看到3个* 号,这表明x和y有非常显著的线性关系(*可以有0—3个,越多则线性关系越显著)。
可以看到回归系数(3.45)显著不为0(p<0.001),表明身高每增高1英寸,体重将预期增加
R平方项(0.991)表明模型可以解释体重99.1%的方差,它也是实际和预测值之间的相
关系数(R2 = r2?Y)。残差标准误(1.53 lbs)则可认为是模型用身高预测体重的平均误差。 F统计
量检验所有的预测变量预测响应变量是否都在某个几率水平之上。由于简单回归只有一个预测变
量,此处F检验等同于身高回归系数的t检验
作出预测
z=data.frame(x=185)
predict(a,z)
predict(a,z,interval="prediction", level=0.95)  
predict(lm.sol,point,interval="prediction",level=0.95)#预测值和上下界
#参数lm.sol是之前建立的线形模型,point是要预测的点,参数interval="prediction"表示要求给出预测的区间(上下界),level则是该区间的预测水平

x=c(171,175,159,155,152,158,154,164,168,166,159,164)
y=c(57,64,41,38,35,44,41,51,57,49,47,46)
stu=data.frame(x,y)
m=lm(y~x+I(x^2),data = stu)
ummary(m)
summary(m)
plot(x,y)
lines(x,fitted(m))  #先把数据排序再画出模型线
plot(stu$x,stu$y,type="b")

增加季节模型的线性拟合
acf(dd$d1)  #看出有周期为7的季节性
d2=d1[1:(length(d1)-10)]
dx=c(1:length(d2))
plot(dx,d2,type = "l",col="red")
ff=rep(1:7,30)  #rep(x,times) 重复 x times 次; 使用 each= 来指定元素 x 重复的次
#dd=cbind(dd,c[1:181])  #按列生成数据框dd
#names(dd)[3]="season"  #数据框第三列名字为season
season=factor(ff[1:length(d2)],levels = (1:7)) #转变成因子  标示数据对应的星期
m2<-lm(d2~dx+season-1)  #增加季节模型的线性拟合
summary(m2)
lines(dx,fitted.values(m2),col="blue") #画出模型图
m2<-lm(d2~dx+season-1+I(dx^2))  #增加季节模型的线性拟合2
summary(m2)
m2<-lm(d2~dx+season-1+I(dx^2)+I(dx^3))
summary(m2)
lines(dx,fitted.values(m2),col="green") #"red", "green", "blue" or "gray" “红色”,“绿色”,“蓝色”或“灰色”
e1=c(172:181)
e3=factor(e3,levels = (1:7))
e4=e1^2
e5=e1^3
e=data.frame(e1,e3,e4,e5)
colnames(e)=c("dx","season","dx^2","dx^3")   
predict(m2,e,interval="prediction",level=0.95)   #数据框e的参数的名字对应拟合曲线参数的名字
pre=predict(m2,e,interval="prediction",level=0.95)
fit=pre[,"fit"]
data.frame(d1[(length(d1)-9):length(d1)],fit,(fit-d1[(length(d1)-9):length(d1)]))
lwr=pre[,"lwr"]
upr=pre[,"upr"]
x1=c(1:length(fit))
now=d1[(length(d1)-9):length(d1)]
x=data.frame(x1,fit,lwr,upr,now)
library("ggplot2")
library("reshape2")
data1 <- melt(x, id.vars="x1")
ggplot(data1, aes(x=x1, y=value)) + geom_line(aes(color=variable))+geom_point(aes(color=variable,shape = variable, size = variable))
ggplot(data1, aes(x=x1, y=value)) + geom_line(aes(color=variable))+geom_point(aes(color=variable,size = 2))  #shape形状为因子类型,size可以为数字,也可以为因子
ggplot(data1, aes(x=x1, y=value)) + geom_line(aes(color=variable))+geom_point(aes(color=variable,size=2)) +geom_smooth()  #加上拟合
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值