R语言程序

本课程中涉及到的部分R语言程序展示 - 仅供教学使用

样本数字特征

计算样本数据的数字特征,包括均值、方差、修正方差、标准差等。

### 样本数据
x <- c(172.0, 173.9, 174.2, 177.2, 174.8, 177.2, 183.6, 170.1, 160.7, 166.5)

n <- length(x) #样本容量
xbar <- mean(x) #样本均值
sx2 <- var(x) #样本修正方差
sx <- sd(x) #样本修正标准差
s2 <- (n-1)*var(x)/n #样本方差
s <- sqrt(s2) #样本标准差

参数估计

一个正态总体中的均值和方差的区间估计。

###样本数据
x <- c(6.6, 4.6, 5.4, 5.8, 5.5)

n <- length(x) #样本容量
xbar <- mean(x) #样本均值
sx2 <- var(x) #样本修正方差
sx <- sd(x) #样本修正标准差

###求总体参数区间估计
alpha <- 0.05

#Miu的双侧0.95置信区间
temp <- sx/sqrt(n)*qt(1-alpha/2,n-1)
data.frame(miuMin=xbar-temp,miuMax=xbar+temp)

#sigma2的双侧0.95置信区间
lower <- (n-1)*sx2/qchisq(1-alpha/2,n-1)
uper <- (n-1)*sx2/qchisq(alpha/2,n-1)
data.frame(sigma2Min=lower,sigma2Max=uper)

两个正态总体中的均值差和方差比的区间估计。

###样本数据
x <- c(2.10, 2.35, 2.39, 2.41, 2.44, 2.56)
y <- c(2.03, 2.28, 2.58, 2.71)

n <- length(x)
m <- length(y) #样本容量
xbar <- mean(x)
ybar <- mean(y) #样本均值
sx2 <- var(x)
sy2 <- var(y) #样本修正方差
sx <- sd(x)
sy <- sd(y) #样本修正标准差

###求总体参数区间估计
alpha <- 0.05

#两总体方差相等时,Miu1-Miu2的双侧0.95置信区间
sw <- sqrt(((n-1)*sx2+(m-1)*sy2)/(n+m-2))
temp <- qt(1-alpha/2,n+m-2)*sw*sqrt(1/n+1/m)
data.frame(miuMin=xbar-ybar-temp, miuMax=xbar-ybar+temp)

#Miu1,Miu2未知时,sigmax2/sigmay2的双侧0.95置信区间
temp <- sx2/sy2
lower <- temp/qf(1-alpha/2,n-1,m-1)
uper <- temp/qf(alpha/2,n-1,m-1)
data.frame(sigma2Min=lower, sigma2Max=uper)

假设检验

一个正态总体中均值的t检验。

###样本数据
x <- c(495, 510, 505, 498, 503, 492, 502, 505, 497, 506)

###检验均值Miu
#双侧检验 H0:mu=500 VS H1:mu不等于500
t.test(x,
alternative = "two.sided",
mu = 500)

#单检验 H0:mu=500 VS H1:mu < 500
t.test(x,
alternative = "less",
mu = 500)

#单检验 H0:mu=500 VS H1:mu > 500
t.test(x,
alternative = "greater",
mu = 500)

###检验方差sigma2
sigma0sq=25
n <- length(x)
sx2 <- var(x)
ChisqStatistics <- (n-1)*sx2/sigma0sq

#双侧检验 H0:sigma2=25 VS H1:sigma2不等于25
p <- pchisq(ChisqStatistics,df=n-1)
p_value <- 2*min(p,1-p)
data.frame(ChisqStatistics=ChisqStatistics,df=n-1,p_value=p_value)

#单侧检验 H0:sigma2=25 VS H1:sigma2 < 25
p <- pchisq(ChisqStatistics,df=n-1)
p_value <- p
data.frame(ChisqStatistics=ChisqStatistics,df=n-1,p_value=p_value)

#单侧检验 H0:sigma2=25 VS H1:sigma2 > 25
p <- pchisq(ChisqStatistics,df=n-1,lower.tail = FALSE)
p_value <- p
data.frame(ChisqStatistics=ChisqStatistics,df=n-1,p_value=p_value)

两个正态总体中均值和方差的假设检验。

#样本数据
x <- c(495, 510, 505, 498, 503, 492, 502, 505, 497, 506)
y <- c(515, 509, 503, 488, 506, 498, 513, 504, 508, 492, 495, 507)

#检验两个正态总体的方差是否相等
var.test(x, y,
alternative = "two.sided")

#两总体方差相等时,检验两个正态总体的均值是否相等
t.test(x, y,
alternative = "two.sided",
var.equal = TRUE)

单因素方差分析

单因素的方差分析,x为所有的各个水平下的样本观测值,group为分组变量。

#样本数据
x <- c(7.3, 8.3, 7.6, 8.4, 8.3,
5.4, 7.4, 7.1, 6.4,
7.9, 9.4, 10.0, 8.1,
7.1, 7.7, 7.4)
#分组
group = factor(c("A", "A", "A", "A","A",
"B", "B", "B", "B",
"C", "C", "C", "C",
"D", "D", "D"))

df <- data.frame(x, group)

#单因素方差分析
result <- aov(x ~ group, data = df)
summary(result)

一元线性回归

x为自变量的观测值,y为因变量Y的观测值,Y对x进行一元线性回归分析。

#样本数据
x <- c(1.5, 1.8, 2.4, 3.0, 3.5, 3.9, 4.4, 4.8, 5.0)
y <- c(4.8, 5.7, 7.0, 8.3, 10.9, 12.4, 13.1, 13.6, 15.3)

#一元线性回归分析
model <- lm(y ~ x)
#输出结果
summary(model)
#画图
plot(x, y)
lines(x, fitted(model))
fitted(model)