5.7 多元线性回归简介
模型:
Yi=β0+β1Xi1+β2Xi2+⋯+βpXip+εiY_i = \beta_0 + \beta_1 X_{i1} + \beta_2 X_{i2} + \cdots + \beta_p X_{ip} + \varepsilon_iYi=β0+β1Xi1+β2Xi2+⋯+βpXip+εi
矩阵形式:Y=Xβ+ε\mathbf{Y} = \mathbf{X}\boldsymbol{\beta} + \boldsymbol{\varepsilon}Y=Xβ+ε
最小二乘估计:
β^=(XTX)−1XTY\hat{\boldsymbol{\beta}} = (\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{Y}β^=(XTX)−1XTY
推导:
Q=(Y−Xβ)T(Y−Xβ)Q = (\mathbf{Y} - \mathbf{X}\boldsymbol{\beta})^T(\mathbf{Y} - \mathbf{X}\boldsymbol{\beta})Q=(Y−Xβ)T(Y−Xβ)
∂Q∂β=−2XT(Y−Xβ)=0\frac{\partial Q}{\partial \boldsymbol{\beta}} = -2\mathbf{X}^T(\mathbf{Y} - \mathbf{X}\boldsymbol{\beta}) = 0∂β∂Q=−2XT(Y−Xβ)=0
XTXβ^=XTY\mathbf{X}^T\mathbf{X}\hat{\boldsymbol{\beta}} = \mathbf{X}^T\mathbf{Y}XTXβ^=XTY
β^=(XTX)−1XTY\hat{\boldsymbol{\beta}} = (\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{Y}β^=(XTX)−1XTY
§6 Bootstrap方法
6.1 基本思想
Bootstrap(自助法)是一种基于重抽样的非参数统计方法,由Efron(1979)提出。其核心思想是:
用样本本身作为"总体",通过有放回抽样产生大量Bootstrap样本,从而估计统计量的抽样分布。
适用场景:
- 总体分布未知或不满足传统方法的假设条件
- 统计量的分布难以推导(如中位数的标准误、比率的置信区间等)
- 样本量较小时的传统方法效果不佳
6.2 非参数Bootstrap的基本步骤
目标 :估计统计量 θ^=g(X1,X2,...,Xn)\hat{\theta} = g(X_1, X_2, \ldots, X_n)θ^=g(X1,X2,...,Xn) 的标准误或置信区间。
步骤:
Step 1 :从原始样本 {X1,X2,...,Xn}\{X_1, X_2, \ldots, X_n\}{X1,X2,...,Xn} 中有放回地 抽取 nnn 个观测值,得到一个Bootstrap样本 X1∗b,X2∗b,...,Xn∗bX_1^{*b}, X_2^{*b}, \ldots, X_n^{*b}X1∗b,X2∗b,...,Xn∗b(b=1,2,...,Bb = 1, 2, \ldots, Bb=1,2,...,B)。
Step 2 :对每个Bootstrap样本计算统计量的值 θ^∗b\hat{\theta}^{*b}θ^∗b。
Step 3 :重复Step 1和Step 2共 BBB 次(通常 B=1000B = 1000B=1000 或 B=10000B = 10000B=10000)。
Step 4 :利用 {θ^∗1,θ^∗2,...,θ^∗B}\{\hat{\theta}^{*1}, \hat{\theta}^{*2}, \ldots, \hat{\theta}^{*B}\}{θ^∗1,θ^∗2,...,θ^∗B} 近似 θ^\hat{\theta}θ^ 的抽样分布。
6.3 Bootstrap标准误
SEboot(θ^)=1B−1∑b=1B(θ^∗b−θˉ∗)2\text{SE}{\text{boot}}(\hat{\theta}) = \sqrt{\frac{1}{B-1}\sum{b=1}^{B}\left(\hat{\theta}^{*b} - \bar{\theta}^{*}\right)^2}SEboot(θ^)=B−11b=1∑B(θ^∗b−θˉ∗)2
其中 θˉ∗=1B∑b=1Bθ^∗b\bar{\theta}^{*} = \frac{1}{B}\sum_{b=1}^{B}\hat{\theta}^{*b}θˉ∗=B1∑b=1Bθ^∗b。
6.4 Bootstrap置信区间
6.4.1 百分位数法(Percentile Method)
将 {θ^∗b}\{\hat{\theta}^{*b}\}{θ^∗b} 从小到大排序,取第 α/2\alpha/2α/2 和 1−α/21-\alpha/21−α/2 分位数:
θ\^(α/2)∗, θ\^(1−α/2)∗\]\\left\[\\hat{\\theta}\^{\*}_{(\\alpha/2)},\\; \\hat{\\theta}\^{\*}_{(1-\\alpha/2)}\\right\]\[θ\^(α/2)∗,θ\^(1−α/2)∗
其中 θ^(k)∗\hat{\theta}^{*}_{(k)}θ^(k)∗ 表示排序后第 kkk 个值。
6.4.2 标准误差法(Normal Approximation)
基于正态近似:
θ\^−z1−α/2⋅SEboot, θ\^+z1−α/2⋅SEboot\]\\left\[\\hat{\\theta} - z_{1-\\alpha/2} \\cdot \\text{SE}_{\\text{boot}},\\; \\hat{\\theta} + z_{1-\\alpha/2} \\cdot \\text{SE}_{\\text{boot}}\\right\]\[θ\^−z1−α/2⋅SEboot,θ\^+z1−α/2⋅SEboot
6.4.3 基本Bootstrap法(Basic/Pivotal Method)
2θ\^−θ\^(1−α/2)∗, 2θ\^−θ\^(α/2)∗\]\\left\[2\\hat{\\theta} - \\hat{\\theta}\^{\*}_{(1-\\alpha/2)},\\; 2\\hat{\\theta} - \\hat{\\theta}\^{\*}_{(\\alpha/2)}\\right\]\[2θ\^−θ\^(1−α/2)∗,2θ\^−θ\^(α/2)∗
推导 :若 θ^∗−θ^\hat{\theta}^* - \hat{\theta}θ^∗−θ^ 是 θ^−θ\hat{\theta} - \thetaθ^−θ 的一个好的近似,则 P(θ^(α/2)∗≤θ^−θ≤θ^(1−α/2)∗)≈1−αP(\hat{\theta}^*{(\alpha/2)} \leq \hat{\theta} - \theta \leq \hat{\theta}^*{(1-\alpha/2)}) \approx 1 - \alphaP(θ^(α/2)∗≤θ^−θ≤θ^(1−α/2)∗)≈1−α,解出 θ\thetaθ 的范围即得上述区间。
6.4.4 BCa法(Bias-Corrected and Accelerated)
这是偏差校正和加速的方法,能同时纠正偏差和偏度:
θ\^(α1)∗, θ\^(α2)∗\]\\left\[\\hat{\\theta}\^{\*}_{(\\alpha_1)},\\; \\hat{\\theta}\^{\*}_{(\\alpha_2)}\\right\]\[θ\^(α1)∗,θ\^(α2)∗
其中:
α1=Φ(z^0+z^0+zα/21−a^(z^0+zα/2))\alpha_1 = \Phi\left(\hat{z}_0 + \frac{\hat{z}0 + z{\alpha/2}}{1 - \hat{a}(\hat{z}0 + z{\alpha/2})}\right)α1=Φ(z^0+1−a^(z^0+zα/2)z^0+zα/2)
α2=Φ(z^0+z^0+z1−α/21−a^(z^0+z1−α/2))\alpha_2 = \Phi\left(\hat{z}_0 + \frac{\hat{z}0 + z{1-\alpha/2}}{1 - \hat{a}(\hat{z}0 + z{1-\alpha/2})}\right)α2=Φ(z^0+1−a^(z^0+z1−α/2)z^0+z1−α/2)
偏差校正因子:
z^0=Φ−1(#{θ^∗b<θ^}B)\hat{z}_0 = \Phi^{-1}\left(\frac{\#\{\hat{\theta}^{*b} < \hat{\theta}\}}{B}\right)z^0=Φ−1(B#{θ^∗b<θ^})
加速因子:
a^=∑i=1n(θ^(⋅)−θ^(i))36∑i=1n(θ\^(⋅)−θ\^(i))23/2\hat{a} = \frac{\sum_{i=1}^{n}(\hat{\theta}{(\cdot)} - \hat{\theta}{(i)})^3}{6\left\\sum_{i=1}\^{n}(\\hat{\\theta}_{(\\cdot)} - \\hat{\\theta}_{(i)})\^2\\right^{3/2}}a^=6∑i=1n(θ\^(⋅)−θ\^(i))23/2∑i=1n(θ^(⋅)−θ^(i))3
其中 θ^(i)\hat{\theta}_{(i)}θ^(i) 为去掉第 iii 个观测后的统计量(刀切法估计)。
6.5 Bootstrap用于假设检验
Bootstrap检验的基本思路:
Step 1 :在 H0H_0H0 下构造Bootstrap样本。对于检验 H0:μ=μ0H_0: \mu = \mu_0H0:μ=μ0:
Xi∗b=Xi−Xˉ+μ0X_i^{*b} = X_i - \bar{X} + \mu_0Xi∗b=Xi−Xˉ+μ0
Step 2 :计算每个Bootstrap样本的检验统计量 T∗bT^{*b}T∗b。
Step 3 :ppp 值估计:
p^=#{∣T∗b∣≥∣Tobs∣}B\hat{p} = \frac{\#\{|T^{*b}| \geq |T_{\text{obs}}|\}}{B}p^=B#{∣T∗b∣≥∣Tobs∣}
6.6 R实现
r
library(boot)
# ========== 基本Bootstrap示例 ==========
# 数据:某工厂产品寿命(单位:小时)
data <- c(112, 120, 115, 108, 130, 125, 118, 122, 110, 115,
128, 119, 121, 117, 124, 126, 113, 116, 120, 123)
# 目标:估计中位数的标准误和95%置信区间
# 方法一:手动实现
set.seed(42)
B <- 10000
n <- length(data)
boot_medians <- numeric(B)
for (b in 1:B) {
boot_sample <- sample(data, size = n, replace = TRUE)
boot_medians[b] <- median(boot_sample)
}
# Bootstrap标准误
se_boot <- sd(boot_medians)
cat("Bootstrap标准误:", se_boot, "\n")
# 百分位数置信区间
ci_percentile <- quantile(boot_medians, probs = c(0.025, 0.975))
cat("百分位数95%置信区间:", ci_percentile, "\n")
# 基本Bootstrap置信区间
theta_hat <- median(data)
ci_basic <- c(2*theta_hat - quantile(boot_medians, 0.975),
2*theta_hat - quantile(boot_medians, 0.025))
cat("基本Bootstrap 95%置信区间:", ci_basic, "\n")
# 绘制Bootstrap分布
hist(boot_medians, breaks = 50, probability = TRUE,
main = "中位数的Bootstrap分布",
xlab = "Bootstrap中位数", col = "lightblue")
abline(v = theta_hat, col = "red", lwd = 2, lty = 2)
abline(v = ci_percentile, col = "blue", lwd = 2, lty = 3)
# ========== 使用boot包 ==========
# 定义统计量函数
median_func <- function(data, indices) {
return(median(data[indices]))
}
# 执行Bootstrap
set.seed(42)
boot_result <- boot(data = data, statistic = median_func, R = 10000)
print(boot_result)
# 置信区间
boot.ci(boot_result, type = c("perc", "basic", "bca"))
# ========== Bootstrap用于回归系数的置信区间 ==========
x <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
y <- c(2.1, 3.9, 6.2, 7.8, 10.1, 12.0, 14.1, 15.9, 18.2, 19.8)
df <- data.frame(x = x, y = y)
# 定义统计量(提取斜率)
slope_func <- function(data, indices) {
d <- data[indices, ]
model <- lm(y ~ x, data = d)
return(coef(model)[2])
}
set.seed(42)
boot_slope <- boot(data = df, statistic = slope_func, R = 10000)
print(boot_slope)
boot.ci(boot_slope, type = c("perc", "basic", "bca"))
# ========== Bootstrap假设检验 ==========
# 检验 H0: mu = 115 vs H1: mu != 115
mu0 <- 115
T_obs <- median(data) # 使用中位数作为检验统计量
B <- 10000
boot_T <- numeric(B)
centered_data <- data - median(data) + mu0 # 在H0下中心化
set.seed(42)
for (b in 1:B) {
boot_sample <- sample(centered_data, size = n, replace = TRUE)
boot_T[b] <- median(boot_sample)
}
p_value <- mean(abs(boot_T - mu0) >= abs(T_obs - mu0))
cat("Bootstrap p值:", p_value, "\n")
6.7 Bootstrap的理论基础
Bootstrap原理的渐近理论:
设 Tn=g(X1,...,Xn)T_n = g(X_1, \ldots, X_n)Tn=g(X1,...,Xn) 是参数 θ\thetaθ 的估计量,Tn∗=g(X1∗,...,Xn∗)T_n^* = g(X_1^*, \ldots, X_n^*)Tn∗=g(X1∗,...,Xn∗) 是Bootstrap估计量。若
supx∣P(Tn−θSE(Tn)≤x)−P(Tn∗−TnSE∗(Tn∗)≤x)∣→0a.s.\sup_x \left|P\left(\frac{T_n - \theta}{\text{SE}(T_n)} \leq x\right) - P\left(\frac{T_n^* - T_n}{\text{SE}^*(T_n^*)} \leq x\right)\right| \to 0 \quad \text{a.s.}xsup P(SE(Tn)Tn−θ≤x)−P(SE∗(Tn∗)Tn∗−Tn≤x) →0a.s.
则Bootstrap分布几乎必然 逼近 TnT_nTn 的真实抽样分布。
Bootstrap的一致性条件:
Bootstrap估计是一致的,当且仅当经验分布函数 FnF_nFn 是 FFF 的一致估计,即:
supx∣Fn(x)−F(x)∣→P0\sup_x |F_n(x) - F(x)| \xrightarrow{P} 0xsup∣Fn(x)−F(x)∣P 0
这由Glivenko-Cantelli定理保证。
附录 R软件的一些介绍
A.1 R的基本数据类型
| 类型 | 说明 | 示例 |
|---|---|---|
| numeric | 数值型 | 3.14, 42 |
| integer | 整型(后缀L) | 42L |
| character | 字符型 | "hello" |
| logical | 逻辑型 | TRUE, FALSE |
| factor | 因子型 | factor(c("A","B","A")) |
A.2 数据结构
r
# 向量
v <- c(1, 2, 3, 4, 5)
# 矩阵
m <- matrix(1:6, nrow = 2, ncol = 3)
# 数据框
df <- data.frame(
name = c("Alice", "Bob", "Carol"),
score = c(85, 92, 78),
grade = c("B", "A", "C")
)
# 列表
lst <- list(name = "Alice", scores = c(85, 90, 78), passed = TRUE)
A.3 常用统计函数
r
# 描述统计
x <- rnorm(100, mean = 50, sd = 10)
mean(x) # 均值
median(x) # 中位数
sd(x) # 标准差
var(x) # 方差
range(x) # 范围
quantile(x) # 四分位数
summary(x) # 五数概括+均值
# 概率分布函数(以正态分布为例)
dnorm(0) # 密度函数 f(0)
pnorm(1.96) # 分布函数 Φ(1.96)
qnorm(0.975) # 分位数函数 Φ⁻¹(0.975) = 1.96
rnorm(100) # 生成100个标准正态随机数
# 其他常用分布:t, chisq, f, binom, pois, exp 等
# 例如:dt(), pt(), qt(), rt() 对应t分布
A.4 重要的统计分布函数对照
| 分布 | 密度/概率 | 分布函数 | 分位数 | 随机数 |
|---|---|---|---|---|
| 正态 N(μ,σ2)N(\mu,\sigma^2)N(μ,σ2) | dnorm |
pnorm |
qnorm |
rnorm |
| t(n)t(n)t(n) | dt |
pt |
qt |
rt |
| χ2(n)\chi^2(n)χ2(n) | dchisq |
pchisq |
qchisq |
rchisq |
| F(m,n)F(m,n)F(m,n) | df |
pf |
qf |
rf |
| B(n,p)B(n,p)B(n,p) | dbinom |
pbinom |
qbinom |
rbinom |
| P(λ)P(\lambda)P(λ) | dpois |
ppois |
qpois |
rpois |
A.5 绘图系统
r
# Base graphics
par(mfrow = c(2, 2))
hist(rnorm(1000), main = "直方图", col = "steelblue")
boxplot(rnorm(100), main = "箱线图")
plot(1:10, (1:10)^2, type = "b", main = "散点折线图")
curve(dnorm(x), -3, 3, main = "密度曲线")
# ggplot2(更强大)
library(ggplot2)
ggplot(data.frame(x = rnorm(1000)), aes(x = x)) +
geom_histogram(bins = 30, fill = "steelblue", color = "white") +
theme_minimal() +
ggtitle("正态分布直方图")
习题十一
习题 1(箱线图)
某班级40名学生成绩如下:
55, 58, 60, 62, 63, 65, 66, 67, 68, 69,
70, 70, 71, 72, 73, 73, 74, 75, 75, 76,
76, 77, 78, 78, 79, 80, 80, 81, 82, 83,
85, 86, 87, 88, 90, 92, 93, 95, 97, 100
(1)求五数概括;
(2)用R绘制箱线图,并判断是否存在异常值;
(3)根据箱线图判断分布的偏态性。
解答:
(1)排序后,n=40n = 40n=40:
- 最小值 =55= 55=55
- Q1Q_1Q1:位置 L25=0.25×41=10.25L_{25} = 0.25 \times 41 = 10.25L25=0.25×41=10.25,Q1=69+0.25×(70−69)=69.25Q_1 = 69 + 0.25 \times (70 - 69) = 69.25Q1=69+0.25×(70−69)=69.25
- Q2Q_2Q2(中位数):位置 L50=20.5L_{50} = 20.5L50=20.5,Q2=76+762=76Q_2 = \frac{76 + 76}{2} = 76Q2=276+76=76
- Q3Q_3Q3:位置 L75=30.75L_{75} = 30.75L75=30.75,Q3=83+0.75×(85−83)=84.5Q_3 = 83 + 0.75 \times (85 - 83) = 84.5Q3=83+0.75×(85−83)=84.5
- 最大值 =100= 100=100
(2)IQR=84.5−69.25=15.25\text{IQR} = 84.5 - 69.25 = 15.25IQR=84.5−69.25=15.25
下界 =69.25−1.5×15.25=46.375= 69.25 - 1.5 \times 15.25 = 46.375=69.25−1.5×15.25=46.375
上界 =84.5+1.5×15.25=107.375= 84.5 + 1.5 \times 15.25 = 107.375=84.5+1.5×15.25=107.375
所有数据均在 46.375,107.37546.375, 107.37546.375,107.375 内,无异常值。
(3)Q2−Q1=76−69.25=6.75Q_2 - Q_1 = 76 - 69.25 = 6.75Q2−Q1=76−69.25=6.75,Q3−Q2=84.5−76=8.5Q_3 - Q_2 = 84.5 - 76 = 8.5Q3−Q2=84.5−76=8.5。由于 Q3−Q2>Q2−Q1Q_3 - Q_2 > Q_2 - Q_1Q3−Q2>Q2−Q1,中位数偏向 Q1Q_1Q1 侧,数据呈轻微右偏分布。
r
scores <- c(55,58,60,62,63,65,66,67,68,69,
70,70,71,72,73,73,74,75,75,76,
76,77,78,78,79,80,80,81,82,83,
85,86,87,88,90,92,93,95,97,100)
boxplot(scores, main="学生成绩箱线图", col="lightblue", horizontal=TRUE)
summary(scores)
习题 2(单样本假设检验)
某饮料厂生产瓶装饮料,标称净含量为 250 ml。现随机抽取 16 瓶,测得净含量为:
249.2, 250.5, 248.8, 251.0, 249.5, 250.1, 249.8, 250.3,
250.7, 249.0, 251.2, 248.5, 250.0, 249.6, 250.8, 249.3
已知 σ=1.0\sigma = 1.0σ=1.0 ml,取 α=0.05\alpha = 0.05α=0.05,检验该厂生产的饮料净含量是否达到标称值。
(1)提出假设并选择检验统计量;
(2)计算检验统计量的值和P值;
(3)做出结论。
解答:
(1)H0:μ=250H_0: \mu = 250H0:μ=250,H1:μ≠250H_1: \mu \neq 250H1:μ=250(双侧检验)
由于 σ=1.0\sigma = 1.0σ=1.0 已知,使用 UUU 检验:
U=Xˉ−250σ/n=Xˉ−2501/16=4(Xˉ−250)U = \frac{\bar{X} - 250}{\sigma / \sqrt{n}} = \frac{\bar{X} - 250}{1/\sqrt{16}} = 4(\bar{X} - 250)U=σ/n Xˉ−250=1/16 Xˉ−250=4(Xˉ−250)
拒绝域:∣U∣>u0.975=1.96|U| > u_{0.975} = 1.96∣U∣>u0.975=1.96
(2)计算 Xˉ\bar{X}Xˉ:
Xˉ=116∑Xi=116×3998.3=249.894\bar{X} = \frac{1}{16}\sum X_i = \frac{1}{16} \times 3998.3 = 249.894Xˉ=161∑Xi=161×3998.3=249.894
U=4×(249.894−250)=4×(−0.106)=−0.425U = 4 \times (249.894 - 250) = 4 \times (-0.106) = -0.425U=4×(249.894−250)=4×(−0.106)=−0.425
P值 =2P(Z>0.425)=2×(1−Φ(0.425))=2×(1−0.6646)=0.6708= 2P(Z > 0.425) = 2 \times (1 - \Phi(0.425)) = 2 \times (1 - 0.6646) = 0.6708=2P(Z>0.425)=2×(1−Φ(0.425))=2×(1−0.6646)=0.6708
(3)由于 ∣U∣=0.425<1.96|U| = 0.425 < 1.96∣U∣=0.425<1.96(或P值 =0.6708>0.05= 0.6708 > 0.05=0.6708>0.05),不拒绝 H0H_0H0 ,即在 α=0.05\alpha = 0.05α=0.05 水平下,没有足够证据认为饮料净含量不达标。
r
data <- c(249.2, 250.5, 248.8, 251.0, 249.5, 250.1, 249.8, 250.3,
250.7, 249.0, 251.2, 248.5, 250.0, 249.6, 250.8, 249.3)
# sigma已知的U检验
n <- length(data)
xbar <- mean(data)
sigma <- 1.0
U <- (xbar - 250) / (sigma / sqrt(n))
p_val <- 2 * (1 - pnorm(abs(U)))
cat(sprintf("U = %.4f, P值 = %.4f\n", U, p_val))
习题 3(两样本假设检验)
为比较两种教学方法的效果,随机将20名学生分为两组,每组10人。成绩如下:
- 方法A:78, 82, 85, 79, 90, 88, 76, 84, 87, 81
- 方法B:72, 75, 80, 74, 78, 71, 76, 73, 77, 79
(1)先检验两组方差是否相等(α=0.05\alpha = 0.05α=0.05);
(2)根据(1)的结论选择适当的检验方法,检验两种教学方法的均值是否有显著差异。
解答:
(1)H0:σ12=σ22H_0: \sigma_1^2 = \sigma_2^2H0:σ12=σ22 vs H1:σ12≠σ22H_1: \sigma_1^2 \neq \sigma_2^2H1:σ12=σ22
计算样本方差:S12=19.60S_1^2 = 19.60S12=19.60,S22=9.34S_2^2 = 9.34S22=9.34(自由度均为 9)
F=S12S22=19.609.34=2.098F = \frac{S_1^2}{S_2^2} = \frac{19.60}{9.34} = 2.098F=S22S12=9.3419.60=2.098
拒绝域:F>F0.975(9,9)=4.026F > F_{0.975}(9,9) = 4.026F>F0.975(9,9)=4.026 或 F<F0.025(9,9)=1/4.026=0.248F < F_{0.025}(9,9) = 1/4.026 = 0.248F<F0.025(9,9)=1/4.026=0.248
由于 0.248<2.098<4.0260.248 < 2.098 < 4.0260.248<2.098<4.026,不拒绝 H0H_0H0,可认为两组方差相等。
(2)H0:μ1=μ2H_0: \mu_1 = \mu_2H0:μ1=μ2 vs H1:μ1≠μ2H_1: \mu_1 \neq \mu_2H1:μ1=μ2
等方差 ttt 检验,Xˉ1=83.0\bar{X}_1 = 83.0Xˉ1=83.0,Xˉ2=75.5\bar{X}_2 = 75.5Xˉ2=75.5
Sw=9×19.60+9×9.3418=176.4+84.0618=260.4618=14.47=3.804S_w = \sqrt{\frac{9 \times 19.60 + 9 \times 9.34}{18}} = \sqrt{\frac{176.4 + 84.06}{18}} = \sqrt{\frac{260.46}{18}} = \sqrt{14.47} = 3.804Sw=189×19.60+9×9.34 =18176.4+84.06 =18260.46 =14.47 =3.804
T=83.0−75.53.804×1/10+1/10=7.53.804×0.4472=7.51.701=4.409T = \frac{83.0 - 75.5}{3.804 \times \sqrt{1/10 + 1/10}} = \frac{7.5}{3.804 \times 0.4472} = \frac{7.5}{1.701} = 4.409T=3.804×1/10+1/10 83.0−75.5=3.804×0.44727.5=1.7017.5=4.409
临界值 t0.975(18)=2.101t_{0.975}(18) = 2.101t0.975(18)=2.101。
由于 ∣T∣=4.409>2.101|T| = 4.409 > 2.101∣T∣=4.409>2.101,拒绝 H0H_0H0。两种教学方法的效果有显著差异,方法A明显优于方法B。
r
A <- c(78, 82, 85, 79, 90, 88, 76, 84, 87, 81)
B <- c(72, 75, 80, 74, 78, 71, 76, 73, 77, 79)
# F检验
var.test(A, B)
# t检验
t.test(A, B, var.equal = TRUE)
习题 4(方差分析)
用三种不同的灯丝材料制作灯泡,各随机抽取5只,测试其使用寿命(小时):
| 材料1 | 材料2 | 材料3 |
|---|---|---|
| 1600 | 1580 | 1540 |
| 1610 | 1640 | 1550 |
| 1650 | 1600 | 1570 |
| 1680 | 1620 | 1600 |
| 1700 | 1660 | 1620 |
(1)进行方差分析(α=0.05\alpha = 0.05α=0.05),检验三种灯丝材料对灯泡寿命是否有显著影响;
(2)若影响显著,进行多重比较。
解答:
(1)
H0:μ1=μ2=μ3,H1:至少有两个均值不等H_0: \mu_1 = \mu_2 = \mu_3, \quad H_1: \text{至少有两个均值不等}H0:μ1=μ2=μ3,H1:至少有两个均值不等
各组均值:Xˉ1=1648\bar{X}_1 = 1648Xˉ1=1648,Xˉ2=1620\bar{X}_2 = 1620Xˉ2=1620,Xˉ3=1576\bar{X}_3 = 1576Xˉ3=1576
总均值:Xˉ=5×1648+5×1620+5×157615=1614.67\bar{X} = \frac{5 \times 1648 + 5 \times 1620 + 5 \times 1576}{15} = 1614.67Xˉ=155×1648+5×1620+5×1576=1614.67
SA=5(1648−1614.67)2+(1620−1614.67)2+(1576−1614.67)2S_A = 5(1648-1614.67)\^2 + (1620-1614.67)\^2 + (1576-1614.67)\^2SA=5(1648−1614.67)2+(1620−1614.67)2+(1576−1614.67)2
=51111.89+28.41+1495.56=5×2635.86=13179.3= 51111.89 + 28.41 + 1495.56 = 5 \times 2635.86 = 13179.3=51111.89+28.41+1495.56=5×2635.86=13179.3
SE=∑(X1j−1648)2+∑(X2j−1620)2+∑(X3j−1576)2S_E = \sum(X_{1j}-1648)^2 + \sum(X_{2j}-1620)^2 + \sum(X_{3j}-1576)^2SE=∑(X1j−1648)2+∑(X2j−1620)2+∑(X3j−1576)2
=7200+3200+3720=14120= 7200 + 3200 + 3720 = 14120=7200+3200+3720=14120
| 来源 | 平方和 | 自由度 | 均方 | F值 |
|---|---|---|---|---|
| 组间 | 13179.3 | 2 | 6589.7 | 5.60 |
| 组内 | 14120 | 12 | 1176.7 | |
| 总计 | 27299.3 | 14 |
F0.95(2,12)=3.89F_{0.95}(2,12) = 3.89F0.95(2,12)=3.89
由于 F=5.60>3.89F = 5.60 > 3.89F=5.60>3.89,拒绝 H0H_0H0,三种灯丝材料对灯泡寿命有显著影响。
r
g1 <- c(1600, 1610, 1650, 1680, 1700)
g2 <- c(1580, 1640, 1600, 1620, 1660)
g3 <- c(1540, 1550, 1570, 1600, 1620)
values <- c(g1, g2, g3)
groups <- factor(rep(c("材料1","材料2","材料3"), each = 5))
model <- aov(values ~ groups)
summary(model)
# 多重比较
TukeyHSD(model)
习题 5(线性回归)
为研究广告投入 XXX(万元)与销售额 YYY(万元)之间的关系,收集了8组数据:
| XXX | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| YYY | 3.1 | 5.0 | 6.8 | 9.0 | 10.9 | 13.1 | 15.0 | 16.8 |
(1)建立一元线性回归方程 Y^=β^0+β^1X\hat{Y} = \hat{\beta}_0 + \hat{\beta}_1 XY^=β^0+β^1X;
(2)检验回归方程的显著性(α=0.05\alpha = 0.05α=0.05);
(3)求 X0=4.5X_0 = 4.5X0=4.5 时 YYY 的预测值和95%预测区间。
解答:
(1)计算各统计量(n=8n = 8n=8):
Xˉ=4.5,Yˉ=9.9625\bar{X} = 4.5, \quad \bar{Y} = 9.9625Xˉ=4.5,Yˉ=9.9625
Lxx=∑Xi2−nXˉ2=204−8×20.25=42L_{xx} = \sum X_i^2 - n\bar{X}^2 = 204 - 8 \times 20.25 = 42Lxx=∑Xi2−nXˉ2=204−8×20.25=42
Lxy=∑XiYi−nXˉYˉ=398.7−8×4.5×9.9625=398.7−358.65=40.05L_{xy} = \sum X_iY_i - n\bar{X}\bar{Y} = 398.7 - 8 \times 4.5 \times 9.9625 = 398.7 - 358.65 = 40.05Lxy=∑XiYi−nXˉYˉ=398.7−8×4.5×9.9625=398.7−358.65=40.05
β^1=LxyLxx=40.0542=0.9536\hat{\beta}1 = \frac{L{xy}}{L_{xx}} = \frac{40.05}{42} = 0.9536β^1=LxxLxy=4240.05=0.9536
β^0=Yˉ−β^1Xˉ=9.9625−0.9536×4.5=9.9625−4.2912=5.6713\hat{\beta}_0 = \bar{Y} - \hat{\beta}_1\bar{X} = 9.9625 - 0.9536 \times 4.5 = 9.9625 - 4.2912 = 5.6713β^0=Yˉ−β^1Xˉ=9.9625−0.9536×4.5=9.9625−4.2912=5.6713
回归方程:
Y^=5.6713+0.9536X\hat{Y} = 5.6713 + 0.9536XY^=5.6713+0.9536X
(2)显著性检验 H0:β1=0H_0: \beta_1 = 0H0:β1=0
Lyy=∑Yi2−nYˉ2=1000.1−8×99.25=206.1L_{yy} = \sum Y_i^2 - n\bar{Y}^2 = 1000.1 - 8 \times 99.25 = 206.1Lyy=∑Yi2−nYˉ2=1000.1−8×99.25=206.1
SR=β^1Lxy=0.9536×40.05=38.19S_R = \hat{\beta}1 L{xy} = 0.9536 \times 40.05 = 38.19SR=β^1Lxy=0.9536×40.05=38.19
SE=Lyy−SR=206.1−38.19=167.91S_E = L_{yy} - S_R = 206.1 - 38.19 = 167.91SE=Lyy−SR=206.1−38.19=167.91
等等,让我重新核实数据。
∑Yi2=3.12+5.02+6.82+9.02+10.92+13.12+15.02+16.82\sum Y_i^2 = 3.1^2 + 5.0^2 + 6.8^2 + 9.0^2 + 10.9^2 + 13.1^2 + 15.0^2 + 16.8^2∑Yi2=3.12+5.02+6.82+9.02+10.92+13.12+15.02+16.82
=9.61+25+46.24+81+118.81+171.61+225+282.24=959.51= 9.61 + 25 + 46.24 + 81 + 118.81 + 171.61 + 225 + 282.24 = 959.51=9.61+25+46.24+81+118.81+171.61+225+282.24=959.51
Lyy=959.51−8×(9.9625)2=959.51−8×99.25=959.51−794.0=165.51L_{yy} = 959.51 - 8 \times (9.9625)^2 = 959.51 - 8 \times 99.25 = 959.51 - 794.0 = 165.51Lyy=959.51−8×(9.9625)2=959.51−8×99.25=959.51−794.0=165.51
∑XiYi=1×3.1+2×5.0+3×6.8+4×9.0+5×10.9+6×13.1+7×15.0+8×16.8\sum X_iY_i = 1\times3.1 + 2\times5.0 + 3\times6.8 + 4\times9.0 + 5\times10.9 + 6\times13.1 + 7\times15.0 + 8\times16.8∑XiYi=1×3.1+2×5.0+3×6.8+4×9.0+5×10.9+6×13.1+7×15.0+8×16.8
=3.1+10+20.4+36+54.5+78.6+105+134.4=442= 3.1 + 10 + 20.4 + 36 + 54.5 + 78.6 + 105 + 134.4 = 442=3.1+10+20.4+36+54.5+78.6+105+134.4=442
Lxy=442−8×4.5×9.9625=442−358.65=83.35L_{xy} = 442 - 8 \times 4.5 \times 9.9625 = 442 - 358.65 = 83.35Lxy=442−8×4.5×9.9625=442−358.65=83.35
重新计算:
β^1=83.3542=1.9845\hat{\beta}_1 = \frac{83.35}{42} = 1.9845β^1=4283.35=1.9845
β^0=9.9625−1.9845×4.5=9.9625−8.9303=1.0322\hat{\beta}_0 = 9.9625 - 1.9845 \times 4.5 = 9.9625 - 8.9303 = 1.0322β^0=9.9625−1.9845×4.5=9.9625−8.9303=1.0322
让我再验证一下 LxyL_{xy}Lxy。
∑XiYi\sum X_i Y_i∑XiYi:
- 1×3.1=3.11 \times 3.1 = 3.11×3.1=3.1
- 2×5.0=10.02 \times 5.0 = 10.02×5.0=10.0
- 3×6.8=20.43 \times 6.8 = 20.43×6.8=20.4
- 4×9.0=36.04 \times 9.0 = 36.04×9.0=36.0
- 5×10.9=54.55 \times 10.9 = 54.55×10.9=54.5
- 6×13.1=78.66 \times 13.1 = 78.66×13.1=78.6
- 7×15.0=105.07 \times 15.0 = 105.07×15.0=105.0
- 8×16.8=134.48 \times 16.8 = 134.48×16.8=134.4
总和 =442.0= 442.0=442.0
nXˉYˉ=8×4.5×9.9625=358.65n\bar{X}\bar{Y} = 8 \times 4.5 \times 9.9625 = 358.65nXˉYˉ=8×4.5×9.9625=358.65
Lxy=442.0−358.65=83.35L_{xy} = 442.0 - 358.65 = 83.35Lxy=442.0−358.65=83.35
好的,重新整理:
β^1=83.3542≈1.9845\hat{\beta}_1 = \frac{83.35}{42} \approx 1.9845β^1=4283.35≈1.9845
β^0=9.9625−1.9845×4.5=9.9625−8.9303≈1.0322\hat{\beta}_0 = 9.9625 - 1.9845 \times 4.5 = 9.9625 - 8.9303 \approx 1.0322β^0=9.9625−1.9845×4.5=9.9625−8.9303≈1.0322
回归方程 :Y^=1.03+1.98X\hat{Y} = 1.03 + 1.98XY^=1.03+1.98X
(2)
SR=β^1×Lxy=1.9845×83.35=165.41S_R = \hat{\beta}1 \times L{xy} = 1.9845 \times 83.35 = 165.41SR=β^1×Lxy=1.9845×83.35=165.41
SE=Lyy−SR=165.51−165.41=0.10S_E = L_{yy} - S_R = 165.51 - 165.41 = 0.10SE=Lyy−SR=165.51−165.41=0.10
σ^2=SEn−2=0.106=0.0167\hat{\sigma}^2 = \frac{S_E}{n-2} = \frac{0.10}{6} = 0.0167σ^2=n−2SE=60.10=0.0167
T=β^1σ^/Lxx=1.98450.0167/42=1.98450.1293/6.4807=1.98450.01995=99.47T = \frac{\hat{\beta}1}{\hat{\sigma}/\sqrt{L{xx}}} = \frac{1.9845}{\sqrt{0.0167}/\sqrt{42}} = \frac{1.9845}{0.1293/6.4807} = \frac{1.9845}{0.01995} = 99.47T=σ^/Lxx β^1=0.0167 /42 1.9845=0.1293/6.48071.9845=0.019951.9845=99.47
t0.975(6)=2.447t_{0.975}(6) = 2.447t0.975(6)=2.447,∣T∣=99.47≫2.447|T| = 99.47 \gg 2.447∣T∣=99.47≫2.447,回归方程高度显著。
R2=SR/Lyy=165.41/165.51=0.9994R^2 = S_R / L_{yy} = 165.41 / 165.51 = 0.9994R2=SR/Lyy=165.41/165.51=0.9994,拟合优度极高。
(3)当 X0=4.5X_0 = 4.5X0=4.5 时:
Y^0=1.0322+1.9845×4.5=1.0322+8.9303=9.96\hat{Y}_0 = 1.0322 + 1.9845 \times 4.5 = 1.0322 + 8.9303 = 9.96Y^0=1.0322+1.9845×4.5=1.0322+8.9303=9.96
95%预测区间:
Y^0±t0.975(6)⋅σ^1+1n+(X0−Xˉ)2Lxx\hat{Y}0 \pm t{0.975}(6) \cdot \hat{\sigma}\sqrt{1 + \frac{1}{n} + \frac{(X_0 - \bar{X})^2}{L_{xx}}}Y^0±t0.975(6)⋅σ^1+n1+Lxx(X0−Xˉ)2
由于 X0=Xˉ=4.5X_0 = \bar{X} = 4.5X0=Xˉ=4.5:
=9.96±2.447×0.0167×1+18+0= 9.96 \pm 2.447 \times \sqrt{0.0167} \times \sqrt{1 + \frac{1}{8} + 0}=9.96±2.447×0.0167 ×1+81+0
=9.96±2.447×0.1293×1.125= 9.96 \pm 2.447 \times 0.1293 \times \sqrt{1.125}=9.96±2.447×0.1293×1.125
=9.96±2.447×0.1293×1.0607= 9.96 \pm 2.447 \times 0.1293 \times 1.0607=9.96±2.447×0.1293×1.0607
=9.96±0.336= 9.96 \pm 0.336=9.96±0.336
即 Y0Y_0Y0 的95%预测区间为 (9.62,10.30)(9.62, 10.30)(9.62,10.30)。
r
X <- c(1, 2, 3, 4, 5, 6, 7, 8)
Y <- c(3.1, 5.0, 6.8, 9.0, 10.9, 13.1, 15.0, 16.8)
model <- lm(Y ~ X)
summary(model)
# 预测
new <- data.frame(X = 4.5)
predict(model, newdata = new, interval = "prediction", level = 0.95)
predict(model, newdata = new, interval = "confidence", level = 0.95)
# 绘图
plot(X, Y, pch = 19, col = "steelblue", main = "广告投入与销售额回归分析",
xlab = "广告投入(万元)", ylab = "销售额(万元)")
abline(model, col = "red", lwd = 2)
# 残差诊断
par(mfrow = c(2, 2))
plot(model)
习题 6(Bootstrap方法)
设某地区20户家庭的年收入(万元)数据为:
5.2, 6.8, 4.5, 8.3, 7.1, 9.5, 3.8, 6.2, 7.8, 10.5,
5.5, 6.9, 7.3, 8.0, 4.2, 9.1, 6.5, 7.6, 5.8, 12.0
(1)用Bootstrap方法估计中位数的标准误(B=5000B = 5000B=5000);
(2)求中位数的95%百分位数Bootstrap置信区间和基本Bootstrap置信区间;
(3)检验 H0:中位数=7H_0: \text{中位数} = 7H0:中位数=7(α=0.05\alpha = 0.05α=0.05),用Bootstrap方法。
解答:
(1)和(2)通过R模拟(结果为模拟值,以下为示例输出):
r
set.seed(123)
income <- c(5.2, 6.8, 4.5, 8.3, 7.1, 9.5, 3.8, 6.2, 7.8, 10.5,
5.5, 6.9, 7.3, 8.0, 4.2, 9.1, 6.5, 7.6, 5.8, 12.0)
B <- 5000
n <- length(income)
boot_med <- numeric(B)
for (b in 1:B) {
boot_med[b] <- median(sample(income, n, replace = TRUE))
}
# (1) Bootstrap标准误
se_boot <- sd(boot_med)
cat("Bootstrap标准误:", round(se_boot, 4), "\n")
# (2) 百分位数置信区间
ci_perc <- quantile(boot_med, c(0.025, 0.975))
cat("百分位数95%CI:", round(ci_perc, 4), "\n")
# 基本Bootstrap置信区间
theta_hat <- median(income)
ci_basic <- c(2*theta_hat - quantile(boot_med, 0.975),
2*theta_hat - quantile(boot_med, 0.025))
cat("基本Bootstrap 95%CI:", round(ci_basic, 4), "\n")
# (3) Bootstrap检验
mu0 <- 7
boot_T <- numeric(B)
centered <- income - median(income) + mu0
set.seed(456)
for (b in 1:B) {
boot_T[b] <- median(sample(centered, n, replace = TRUE))
}
p_val <- mean(abs(boot_T - mu0) >= abs(median(income) - mu0))
cat("Bootstrap p值:", round(p_val, 4), "\n")
参考结果(因随机性可能略有差异):
- Bootstrap标准误 ≈0.55\approx 0.55≈0.55
- 百分位数95%CI ≈(5.85,8.15)\approx (5.85, 8.15)≈(5.85,8.15)
- 基本Bootstrap 95%CI ≈(5.85,8.15)\approx (5.85, 8.15)≈(5.85,8.15)
- 原始中位数 =6.95= 6.95=6.95
- Bootstrap p值 ≈0.85\approx 0.85≈0.85
(3)由于Bootstrap p值远大于0.05,不拒绝 H0H_0H0,即没有足够证据认为该地区家庭年收入的中位数不等于7万元。
习题 7(综合应用题)
某研究者收集了30名学生的数学成绩(YYY)、每周学习时间(X1X_1X1,小时)和参加辅导班次数(X2X_2X2,次/月),数据如下:
r
set.seed(2024)
n <- 30
X1 <- round(runif(n, 5, 25), 1) # 每周学习时间
X2 <- sample(0:8, n, replace = TRUE) # 辅导班次数
Y <- round(40 + 1.5*X1 + 3*X2 + rnorm(n, 0, 5), 1)
(1)建立多元线性回归方程;
(2)对回归方程进行 FFF 检验;
(3)对各回归系数分别进行 ttt 检验;
(4)计算决定系数 R2R^2R2 并解释其含义。
R解答代码:
r
set.seed(2024)
n <- 30
X1 <- round(runif(n, 5, 25), 1)
X2 <- sample(0:8, n, replace = TRUE)
Y <- round(40 + 1.5*X1 + 3*X2 + rnorm(n, 0, 5), 1)
# (1) 多元线性回归
model <- lm(Y ~ X1 + X2)
summary(model)
# (2) F检验 --- 方差分析表
anova(model)
# (3) 回归系数的t检验 --- 在summary中已给出
# 关注 Coefficients 表中的 t value 和 Pr(>|t|)
# (4) R²
cat("R² =", summary(model)$r.squared, "\n")
cat("调整R² =", summary(model)$adj.r.squared, "\n")
# 预测
new_data <- data.frame(X1 = 15, X2 = 4)
predict(model, newdata = new_data, interval = "prediction")
理论说明:
多元线性回归的 FFF 检验统计量:
F=SR/pSE/(n−p−1)∼F(p,n−p−1)F = \frac{S_R / p}{S_E / (n - p - 1)} \sim F(p, n-p-1)F=SE/(n−p−1)SR/p∼F(p,n−p−1)
其中 ppp 为自变量个数(本题 p=2p = 2p=2)。
R2R^2R2 的含义:R2=SR/STR^2 = S_R / S_TR2=SR/ST 表示响应变量的变异中能被回归方程解释的比例,R2R^2R2 越接近1,拟合越好。
调整 R2R^2R2:
Rˉ2=1−SE/(n−p−1)ST/(n−1)=1−(1−R2)n−1n−p−1\bar{R}^2 = 1 - \frac{S_E/(n-p-1)}{S_T/(n-1)} = 1 - (1-R^2)\frac{n-1}{n-p-1}Rˉ2=1−ST/(n−1)SE/(n−p−1)=1−(1−R2)n−p−1n−1
调整 R2R^2R2 对变量个数施加了惩罚,避免过度拟合。
全章总结:
| 方法 | 核心统计量 | 分布 | R函数 |
|---|---|---|---|
| 单样本 UUU 检验 | U=Xˉ−μ0σ/nU = \frac{\bar{X}-\mu_0}{\sigma/\sqrt{n}}U=σ/n Xˉ−μ0 | N(0,1)N(0,1)N(0,1) | --- |
| 单样本 ttt 检验 | T=Xˉ−μ0S/nT = \frac{\bar{X}-\mu_0}{S/\sqrt{n}}T=S/n Xˉ−μ0 | t(n−1)t(n-1)t(n−1) | t.test() |
| 两样本 ttt 检验 | T=Xˉ−YˉSw1/m+1/nT = \frac{\bar{X}-\bar{Y}}{S_w\sqrt{1/m+1/n}}T=Sw1/m+1/n Xˉ−Yˉ | t(m+n−2)t(m+n-2)t(m+n−2) | t.test() |
| FFF 检验(方差比) | F=S12/S22F = S_1^2/S_2^2F=S12/S22 | F(m−1,n−1)F(m-1,n-1)F(m−1,n−1) | var.test() |
| 单因素ANOVA | F=MSA/MSEF = MS_A/MS_EF=MSA/MSE | F(r−1,n−r)F(r-1,n-r)F(r−1,n−r) | aov() |
| 一元回归 | T=β^1/(σ^/Lxx)T = \hat{\beta}1/(\hat{\sigma}/\sqrt{L{xx}})T=β^1/(σ^/Lxx ) | t(n−2)t(n-2)t(n−2) | lm() |
| Bootstrap | 重抽样分布 | 非参数近似 | boot() |