天天看點

數學模組化--線性回歸和線性相關性分析基于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語言模組化王斌會教授

繼續閱讀