# 第4章 相关分析与回归分析及R使用
# 4.1一元线性回归分析
# 4.1.1 简单相关分析的R计算
x1 <- c(171,175,159,155,152,158,154,164,168,166,159,164) # 身高
y2 <- c(57,64,41,38,35,44,41,51,57,49,47,46) # 体重
plot(x1, y2)
lxy <- function(x,y){
n=length(x)
return(sum(x*y)-sum(x)*sum(y)/n)
}
# 计算pearson相关系数
r <- lxy(x1,y2)/sqrt(lxy(x1,x1)*lxy(y2,y2)) # 直接计算
# 假设检验相关系数r是否显著
# 计算t值
t <- r/sqrt((1-r^2)/(length(x1)-2)) # 直接计算
cor.test(x1,y2) # 调用函数计算t值和p值
# 4.1.2 一元线性回归分析的R计算
b <- lxy(x1,y2)/lxy(x1,x1) # 计算回归系数b
a <- mean(y2) - b*mean(x1) # 计算截距a
plot(x1,y2) # 画散点图
lines(x1,a+b*x1) # 作回归直线
# 回归系数的假设检验
# 方差分析
SST <- lxy(y2,y2) # y2实测值的离均差平方和
SSR <- b*lxy(x1,y2) # x1对y2的线性影响
SSE <- SST - SSR
MSR <- SSR/1 # 这里是指回归自由度为1
MSE <- SSE/(length(x1)-2) # length(x1)-2为误差自由度
F <- MSR/MSE
# F_0.95(1,22)=4.3,由于F=115.4>4.3,所以有P<0.01,于是在alpha=0.05水平处拒绝H_0,及回归系数有统计学意义,x1与y2之间存在直线回归关系
# t检验
sy.x <- sqrt(MSE)
sb <- sy.x/sqrt(lxy(x1,x1))
t <- b/sb # 计算t值
# 调用系统函数
# 构建线性回归模型
lm <- lm(y2~x1)
# 模型的方差分析,即F检验,观察Pr(>F)值的显著性
anova(lm)
# 回归系数的t检验,观察Pr(>|t|)值的显著性
summary(lm)
# 4.1一元线性回归分析
# 4.1.1 简单相关分析的R计算
x1 <- c(171,175,159,155,152,158,154,164,168,166,159,164) # 身高
y2 <- c(57,64,41,38,35,44,41,51,57,49,47,46) # 体重
plot(x1, y2)
lxy <- function(x,y){
n=length(x)
return(sum(x*y)-sum(x)*sum(y)/n)
}
# 计算pearson相关系数
r <- lxy(x1,y2)/sqrt(lxy(x1,x1)*lxy(y2,y2)) # 直接计算
cor(x1, y2, method=c("pearson")) # 调用函数计算
Pearson相关系数计算公式:R(X,Y) = cov(X,Y) / [sd(X)*sd(Y)]
# 假设检验相关系数r是否显著
# 计算t值
t <- r/sqrt((1-r^2)/(length(x1)-2)) # 直接计算
cor.test(x1,y2) # 调用函数计算t值和p值
# 4.1.2 一元线性回归分析的R计算
b <- lxy(x1,y2)/lxy(x1,x1) # 计算回归系数b
a <- mean(y2) - b*mean(x1) # 计算截距a
plot(x1,y2) # 画散点图
lines(x1,a+b*x1) # 作回归直线
# 回归系数的假设检验
# 方差分析
SST <- lxy(y2,y2) # y2实测值的离均差平方和
SSR <- b*lxy(x1,y2) # x1对y2的线性影响
SSE <- SST - SSR
MSR <- SSR/1 # 这里是指回归自由度为1
MSE <- SSE/(length(x1)-2) # length(x1)-2为误差自由度
F <- MSR/MSE
# F_0.95(1,22)=4.3,由于F=115.4>4.3,所以有P<0.01,于是在alpha=0.05水平处拒绝H_0,及回归系数有统计学意义,x1与y2之间存在直线回归关系
# t检验
sy.x <- sqrt(MSE)
sb <- sy.x/sqrt(lxy(x1,x1))
t <- b/sb # 计算t值
# 调用系统函数
# 构建线性回归模型
lm <- lm(y2~x1)
# 模型的方差分析,即F检验,观察Pr(>F)值的显著性
anova(lm)
# 回归系数的t检验,观察Pr(>|t|)值的显著性
summary(lm)