200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > R假设检验与一元线性回归分析

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

时间:2020-01-23 13:22:24

相关推荐

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() #加上拟合

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。