您的当前位置:首页正文

R语言实验六

2022-05-28 来源:易榕旅网


实验六 重要的参数检验与功效检验

【实验类型】验证性 【实验学时】2 学时 【实验目的】

1、掌握假设检验的基本思想;

2、掌握重要的参数检验及功效检验的求解方法; 3、了解非参数假设检验的基本思想及求解方法。 【实验内容】

1、参数检验(t 检验、F 检验、二项分布检验和泊松检验等)的计算; 2、功效检验的计算;

3、非参数检验(符号与秩检验、分布的检验、相关性检验等)的求解。 【实验方法或步骤】 第一部分、课件例题:

#1 例6.2

X<-c(159, 280, 101, 212, 224, 379, 179, 264, 222, 362, 168, 250, 149, 260, 485, 170)

t.test(X, alternative = \"greater\单侧检验

由于p值(= 0.257)>0.05,不能拒绝原假设,接受H 0 ,即认为 平均寿命不大于225h #2 例6.3

X<-c(78.1, 72.4, 76.2, 74.3, 77.4, 78.4, 76.0, 75.5, 76.7, 77.3) Y<-c(79.1, 81.0, 77.3, 79.1, 80.0, 79.1,79.1, 77.3, 80.2, 82.1) t.test(X, Y, al = \"l\μ 1 -μ 2 <0 t.test(X, Y, al = \"l\") #使用总体方差不同模型

t.test(X, Y, al = \"l\配对数据检验 ## 公式形式

obtain<-data.frame(

value = c(78.1, 72.4, 76.2, 74.3, 77.4, 78.4, 76.0, 75.5, 76.7, 77.3, 79.1, 81.0, 77.3, 79.1, 80.0, 79.1, 79.1, 77.3, 80.2, 82.1),

group = gl(2, 10)) #生成2水平、各有10个元素的因子向量 t.test(value ~ group, data = obtain,

alternative = \"less\

由于p值(= 0.000218)<0.05,拒绝原假设,即接受H 1 ,再利 用μ 1 -μ 2 的置信区间,可以说明新操作方法能够提高得率。 #3 例6.4

X<-c(78.1, 72.4, 76.2, 74.3, 77.4, 78.4, 76.0, 75.5, 76.7, 77.3) Y<-c(79.1, 81.0, 77.3, 79.1, 80.0, 79.1, 79.1, 77.3, 80.2, 82.1) var.test(X, Y) #方差相等的F检验 ## 使用公式形式 obtain<-data.frame(

value = c(78.1, 72.4, 76.2, 74.3, 77.4, 78.4, 76.0, 75.5, 76.7, 77.3, 79.1, 81.0, 77.3, 79.1, 80.0, 79.1, 79.1, 77.3, 80.2, 82.1),

group = gl(2, 10)) #生成2水平、各有10个元素的因子向量 var.test(value ~ group, data = obtain)

由于p值(=0.559)>0.05,无法拒绝原假设,所以认为两总体 的方差是相同的。从方差比的置信区间[0.37, 6.02]来看,它 包含1,因此,在例6.3中,假设两总体方差相同是合理的 #4 例6.5

prop.test (400, 10000, p=0.02) #比率(成功的概率)检验

#5 例6.6

n<-c(2000,1500); x<-c(652,576) prop.test(x,n) #双样本的比率检验

#6 例6.7

X <- matrix(c(15, 32, 10, 42, 42, 59), nrow=2, byrow=T) colnames(X) <- c(\"30s\rownames(X) <- c(\"Yes\X

X.yes <- X[\"Yes\

X.total <- margin.table(X,2) #计算表格的列和(参数1为行和) prop.test(X.yes, X.total) #三样本的比率检验

pairwise.prop.test(X.yes, X.total) #比率的多重比较

#7 例6.8

binom.test(3, 100, p=0.01, al=\"g\") #二项分布检验(单边)

#8 例6.9

poisson.test(x=12, T=1.2, r=5, al=\"g\") #Poisson分布检验(单边)

#9 例6.10 ##t 检验

X <- c(1050, 960, 1120, 1250, 1280); mu0 <- 1000

t.test(X, mu = mu0, al = \"g\") #原假设H 0 :μ 1 ≤μ 0 =1000

## 计算功效

power.t.test(n=length(X), delta=mean(X)-mu0, sd=sd(X), type=\"one.sample\

## 计算给定功效下的试验次数

power.t.test(power=0.90, delta=mean(X)-mu0, sd=sd(X), type=\"one.sample\

#10 例6.12

power.prop.test(power=0.9, p1 = 652/2000, p2 = 576/1500)

#11 例6.13

binom.test( 3, 12, al=\"l\

#12 例6.14

X <- scan(\"F:/文档/大学课程/R语言/ch06/city.data\") #读取数据 prop.test(sum(X>99), length(X))

#13 例6.15

X <- scan(\"F:/文档/大学课程/R语言/ch06/battery.data\") wilcox.test(X, mu = 140, exact = F, conf.int = T)

binom.test(sum(X>140), n = 19) #n=19是去掉了M=140的项

#14 例6.16

x <- rep(1:4, c(62, 41, 14, 11)); y <- rep(1:4, c(20, 37, 16, 15)) wilcox.test(x, y, conf.int = TRUE)

#15 例6.17

#计算样本均值与样本标准差,并作为总体参数的估计

Z <- scan(\"F:/文档/大学课程/R语言/ch06/exam.data\"); mu <- mean(Z); S <- sd(Z) #将整个实轴划分成8个子区间

p <- seq(from = 0.125, to = 0.875, by = 0.125) q <- qnorm(p, mean = mu, sd = S); q #计算落入每个子区间的实际频数

Y <- table(cut(Z, breaks = c(-Inf, q, Inf))); Y # 作拟合优度检验

F <- pnorm(q, mean = mu, sd = S); m <- length(Y) p <- F[1]; p[m] <- 1 - F[m-1]

for (i in 2:(m-1)) p[i]<-F[i]-F[i-1] (chi<- chisq.test(Y, p = p))

#因用样本值代替总体参数, 自由度减少2, 需重新计算p值 Pval <- 1 - pchisq(chi$statistic, df = m - 3) names(Pval) <- \"P_val\"; Pval

#16 例6.18

X <- scan(\"F:/文档/大学课程/R语言/ch06/exam.data\") shapiro.test(X)

#17 例6.19

x <- matrix(c(60, 3, 32, 11), nc = 2); chisq.test(x)

#18 例6.20

x <- matrix(c(4, 5, 18, 6), nc = 2); fisher.test(x)

#19 例6.21

X <- array(c(19, 0, 132, 9, 11, 6, 52, 97), dim = c(2, 2, 2)) mantelhaen.test(X)

#20 例6.22

rt <- read.table(\"F:/文档/大学课程/R语言/ch06/weight.data\"); rt with(rt, cor.test(X,Y))

cor.test(~ X + Y, data = rt) #公式形式

#21 例6.23

X <- c(86, 77, 68, 91, 70, 71, 85, 87, 63) Y <- c(88, 76, 64, 96, 65, 80, 81, 72, 60) cor.test(X, Y, method = \"kendall\")

#22 例6.24

library(tseries)

X<-scan(what = \"\") #注意符号(共40)输入完成后回车一下 + + - + - - - + - + + + - - + - + + - - - + - - + - - - - + + + + - - + - + + - runs.test(as.factor(X))

第二部分、教材例题:

#1 例6.2.1

#z.test()函数定义

z.test<-function(x,n,sigma,alpha,u0=0,alternative=\"two.sided\"){ options(digits=4)

result<-list( ) mean<-mean(x)

z<-(mean-u0)/(sigma/sqrt(n)) p<-pnorm(z,lower.tail=FALSE) result$mean<-mean result$z<-z

result$p.value<-p

if(alternative==\"two.sided\"){ p<-2*p

result$p.value<-p }

else if (alternative == \"greater\"|alternative ==\"less\" ){ result$p.value<-p }

else return(\"your input is wrong\") result$conf.int<- c(

mean-sigma*qnorm(1-alpha/2,mean=0, sd=1, lower.tail = TRUE)/sqrt(n), mean+sigma*qnorm(1-alpha/2,mean=0, sd=1, lower.tail = TRUE)/sqrt(n)) result }

z.test(0.13, 25, 0.1, 0.05, u0=0.12, alternative=\"less\")

#2 例6.2.2

salt<-c(490 , 506, 508, 502, 498, 511, 510, 515 , 512) t.test(salt, mu=500)

#3 例6.2.3

CaCo3<-c(20.9, 20.41, 20.10, 20.00, 20.19, 22.60, 20.99, 20.41, 20, 23, 22) t.test(CaCo3, mu=20.7)

#4 例6.2.4

#函数chisq.var.test( )可以用来求σ 2 置信区间

chisq.var.test <- function (x,var,alpha,alternative=\"two.sided\"){ options(digits=4) result<-list( ) n<-length(x) v<-var(x) result$var<-v

chi2<-(n-1)*v/var result$chi2<-chi2 p<-pchisq(chi2,n-1)

if(alternative == \"less\"|alternative==\"greater\"){ result$p.value<-p

} else if (alternative==\"two.sided\") { if(p>.5) p<-1-p p<-2*p

result$p.value<-p

} else return(\"your input is wrong\") result$conf.int<-c(

(n-1)*v/qchisq(alpha/2, df=n-1, lower.tail=F), (n-1)*v/qchisq(alpha/2, df=n-1, lower.tail=T)) result }

time<-c(42, 65, 75, 78, 59, 71, 57, 68, 54, 55) chisq.var.test(time, 80, 0.05, alternative=\"less\")

#5 例6.3.1

x<-c(20.5, 19.8, 19.7, 20.4, 20.1, 20.0, 19.0, 19.9) y<-c(20.7, 19.8, 19.5, 20.8, 20.4, 19.6, 20.2) t.test(x, y, var.equal=TRUE)

#6 例6.3.2

x<-c(20.5, 19.8, 19.7, 20.4, 20.1, 20.0, 19.0, 19.9) y<-c(20.7, 19.8, 19.5, 20.8, 20.4, 19.6, 20.2) var.test(x, y)

#7 例6.4.1

x<-c(20.5, 18.8, 19.8, 20.9, 21.5, 19.5, 21.0, 21.2) y<-c(17.7, 20.3, 20.0, 18.8, 19.0, 20.1, 20.0, 19.1) t.test(x, y, paired=TRUE)

library(DAAG)

data.x<-c(20.5, 18.8, 19.8, 20.9, 21.5, 19.5, 21.0, 21.2) data.y<-c(17.7, 20.3, 20.0, 18.8, 19.0, 20.1, 20.0, 19.1) z<-data.frame(data.x, data.y)

onesamp(z, x=\"data.y\

#8 例6.5.1

binom.test(c(7, 5), p=0.4)

prop.test(7, 12, p=0.4, correct=TRUE)

#9 例6.5.2

prop.test(35, 120, p=0.25, conf.level=0.975, correct=TRUE)

#10 例6.6.1

success<-c(23, 25) total<-c(102, 135)

prop.test(success, total)

第三部分、课后习题:

6.1

#z.test()函数定义

z.test<-function(x,n,sigma,alpha,u0=0,alternative=\"two.sided\"){ options(digits=4) result<-list( ) mean<-mean(x)

z<-(mean-u0)/(sigma/sqrt(n)) p<-pnorm(z,lower.tail=FALSE) result$mean<-mean result$z<-z

result$p.value<-p

if(alternative==\"two.sided\"){ p<-2*p

result$p.value<-p }

else if (alternative == \"greater\"|alternative ==\"less\" ){ result$p.value<-p }

else return(\"your input is wrong\") result$conf.int<- c(

mean-sigma*qnorm(1-alpha/2,mean=0, sd=1, lower.tail = TRUE)/sqrt(n), mean+sigma*qnorm(1-alpha/2,mean=0, sd=1, lower.tail = TRUE)/sqrt(n)) result }

x<-c(914,920,910,934,953,940,912,924,930) t.test(x, mu=950) 结果如下:

结论:因为p值=0.001 < = 0.01, 故认为这批枪弹的初速有显著降低 6.2

#函数chisq.var.test( )可以用来求σ 2 置信区间

chisq.var.test <- function (x,var,alpha,alternative=\"two.sided\"){ options(digits=4) result<-list( ) n<-length(x) v<-var(x) result$var<-v

chi2<-(n-1)*v/var result$chi2<-chi2 p<-pchisq(chi2,n-1)

if(alternative == \"less\"|alternative==\"greater\"){ result$p.value<-p

} else if (alternative==\"two.sided\") { if(p>.5) p<-1-p p<-2*p

result$p.value<-p

} else return(\"your input is wrong\") result$conf.int<-c(

(n-1)*v/qchisq(alpha/2, df=n-1, lower.tail=F), (n-1)*v/qchisq(alpha/2, df=n-1, lower.tail=T)) result }

x<-c(1.32,1.55,1.36,1.40,1.1)

chisq.var.test(x,0.048^2, 0.05, alternative=\"less\") 结果如下:

结论:因为p值=1 > = 0.05, 所以接受原假设,认为抽取的维尼纶纤度的总体标准差正常 6.3

a<-c(5.5,5.6,6.3,4.6,5.3,5.0,6.2,5.8,5.1,5.2,5.9) b<-c(3.8,4.3,4.2,4.9,4.5,5.2,4.8,4.5,3.9,3.7,3.6,2.9) var.test(a,b)

t<-(mean(a)-mean(b))/(sqrt((10*var(a)+11*var(b))/21)*sqrt(1/11+1/12)) #求t检验统计量 t

p<-pt(t,df=21) #计算p值 p

结果如下:

结论:由于因为p值=0.9999854 > = 0.05, 故接收原假设, 认为型号A的计算器平均使用时间比型号B长。 6.4

a1<-c(0.140,0.138,0.143,0.142,0.144,0.137) b1<-c(0.135,0.140,0.142,0.136,0.138,0.130) var.test(a1,b1)

t.test(a1,b1,paired = TRUE) 结果如下:

结论: 因为p值=0.3921 > = 0.01, 故接收原假设, 认为两个总体的方差相等.

结论: 因为p值=0.04549 < = 0.05, 故拒绝原假设, 认为两个总体的均值不相等. 6.5

binom.test(c(12,3),p=0.3) 结果如下:

结论: 因为p值=0.5752 > = 0.05, 故接收原假设, 认为成年人中大学毕业生比例不低于30%.

因篇幅问题不能全部显示,请点此查看更多更全内容