天天看点

数学建模--线性回归和线性相关性分析基于R语言

线性相关性分析:

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)
plot(x,y)
#相关系数计算
cor(x,y)
#建立假设检验:H0:ρ=0,H1:ρ≠0,α=0.05(即原假设为不相关)
#计算相关系数r的t值
cor.test(x,y)
#df:自由度
#p-value<0.05因而x,y有相关性
#95 percent confidence interval:百分之九十五区间估计
#sample estimates:点估计
#结论:由于p-value = 8.21e-07<0.05,于是在α=0.05水准上拒绝H0(即拒绝原假设),接受H1的,可认为该人群身高与体重呈现正的线性关系
           

线性回归性分析:

x1=c(171,175,159,155,152,158,154,164,168,166,159,164)
x2=c(57,64,41,38,35,44,41,51,57,49,47,46)
plot(x1,x2)
#建立离均差乘积和函数:
lxy <- function(x,y)
  sum(x*y)-sum(x)*sum(y)/length(x)
#用离均差乘积和计算相关系数:
r=lxy(x1,x2)/sqrt(lxy(x1,x1)*lxy(x2,x2))
#建立假设检验:H0:ρ=0,H1:ρ≠0,α=0.05(即原假设为不相关)
#计算相关系数r的t值:
n=length(x1)
tr=r/sqrt((1-r^2)/(n-2))
#计算t值和p值,作结论:
cor.test(x1,x2)
##结论:由于p-value = 8.21e-07<0.05,于是在α=0.05水准上拒绝H0(即拒绝原假设),接受H1的,可认为该人群身高与体重呈现正的线性关系
#建立直线回归方程:
b=lxy(x,y)/lxy(x,x)#线性回归方程斜率
a=mean(y)-b*mean(x)#线性回归方程截距
c(a=a,b=b)
plot(x,y)#做散点图
lines(x,a+b*x)#添加估计方程线



#数据输入
d4.3=read.table("clipboard",header=T)
#拟合模型
m4.3=lm(y~x,data=d4.3);
#作回归直线
plot(y~x,data = d4.3)#做散点图
abline(m4.3)
#模型的方差分析
anova(m4.3)
#回归系数t检验
summary(m4.3)
#结论:由于p<0.05,于是在α=0.05水平处拒绝H0,即本例回归系数有统计学意义,x与y间存在直线回归关系



           

多元线性回归:

#建立多元线性回归方程
d4.4=read.table("clipboard",header = T)
m4.4=lm(y~x1+x2+x3+x4,data=d4.4)
#t检验
summary(m4.4)
#多元数据相关系数矩阵
cor(d4.4)
msa.cor.test(d4.4)
#显示多元线性回归模型决定系数
R2=summary(m4.4)$r.sq
#显示多元数据负相关系数
R=sqrt(R2)
#全局择优法
#RSS与R2准则回归子集
library(leaps)
varsel=regsubsets(y~x1+x2+x3+x4,data=d4.4)
result=summary(varsel)
data.frame(result$outmat,RSS=result$rss,R2=result$rsq)
#CP与BIC准则回归子集
data.frame(result$outmat,adjR2=result$adjr2,Cp=result$cp,BIC=result$bic)
#逐步回归法
m4.4=lm(y~x1+x2+x3+x4,data=d4.4)
m4.4.step=step(m4.4,direction="forward")
m4.4.step=step(m4.4,direction="backward")
m4.4.step=step(m4.4,direction="both")
#AIL越小模型越优
           

资料参考:中国大学mooc多元统计分析及R语言建模王斌会教授

继续阅读