上机试题+答案

题目&答案

答案仅供参考

# 投掷一枚不均匀硬币1000次,硬币正面朝上的概率为0.6
# 编写R代码模拟计算出现正面次数小于600次的概率
data = c(0, 1) 
cnt = 1; a = 0
while(cnt <= 10000){ # 多次重复试验
    # 实验1000次
    x = sample(x = data, size = 1000, prob = c(0.4, 0.6), replace = TRUE)
    if(sum(x) <= 600) 
        a = a + 1
    cnt = cnt + 1
}
a / 10000



# 坛子中有8个红球,4个白球,我们无放回的取出两个球
# 假定球的质量不同,每个红球的质量为10g,白球的质量为15g
# 假设每次抽到一给定球的概率是除以当时坛子中球的总质量
# 编写R代码模拟计算两次取出的都为红球的概率
cnt = 1
a = 0
while(cnt <= 10000){
    total_weight = 8 * 10 + 4 * 15 # 总质量
    nr = 8                         # 红球数
    nw = 4                         # 白球数
    # first take
    f_t = sample(x = c(0,1), prob = c(15 * nw / total_weight, 10 * nr / total_weight), size = 1, replace = TRUE)
    if(f_t[1] == 1){               # 抽到红球 对应总质量和球的个数减少
        total_weight = total_weight - 10
        nr = nr - 1
    } else {                       # 抽到白球 对应总质量和球的个数减少
        total_weight = total_weight - 15
        nw = nw - 1
    }
    # second take                 这里和上面代码相似度较高,可以一起封装成函数,这里就不展示了
    s_t = sample(x = c(0,1), prob = c(15 * nw / total_weight, 10 * nr / total_weight), size = 1, replace = TRUE)
    if(s_t[1] == 1){               # 同上
      total_weight = total_weight - 10
      nr = nr - 1
    } else {
      total_weight = total_weight - 15
      nw = nw - 1
    }
    # 这里可以判断红球或白球的个数,也可判断质量
    # 这里判断质量
    if (total_weight == 6 * 10 + 15 * 4) # 两次都取出为红球,说明剩下6红4白,计算当前总质量即可
        a = a + 1
    cnt = cnt + 1
}
a / 10000                  # 计算概率



# 编写R代码随机生成10000个服从均值为0.2的指数分布的随机数
# 并画出这组数据的直方图(含核密度曲线)、箱线图
# 同时计算这组随机数的均值,方差,最大值,最小值
set.seed(time(0))          # 随机数种子,可要可不要
rm = rexp(10000,0.2)       # 生成随机数
hist(rm, freq = FALSE)     # 绘制直方图
lines(density(rm))         # 绘制核密度曲线
boxplot(rm)                # 绘制箱线图(这两个图只能显示一个不知道怎么解决,分布运行分别查看吧
mean(rm)                   # 均值
var(rm)                    # 方差
sd(x)                      # 标准差
max(rm)                    # 最大值
min(rm)                    # 最小值



# 后面几题都是套公式,就没有什么注释好写的啦~



# 区间估计:编写R代码计算两个独立分布方差比值的0.95的置信区间
# 可用rnorm函数生成具有不同方差的样本数据
x = rnorm(10, 0, 4)        # 10是个数,0是均值,4是方差
y = rnorm(10, 0, 8)        
n1 = length(x)
n2 = length(y)
Sx = var(x)
Sy = var(y)
k = Sx/Sy
alpha = 0.95               # 置信区间
right = k / qf(1 - alpha / 2, nx - 1, ny - 1)
left = k / qf(alpha / 2, nx - 1, ny - 1)
data.frame(S_1 = Sx, S_2 = Sy, a = left, b=right)



# 分别编写R代码(不用t.test函数)和用t.test函数完成第八章习题7的假设检验
X = c(6,4,5,5,6,5,5,6,4,6,7,4)
Y = c(2,1,2,2,1,0,3,2,1,0,1,3)
alpha = 0.05
mx = mean(X)
my = mean(Y)
nx = length(X)
ny = length(Y)
Sx = var(X)
Sy = var(Y)
S_w = ((nx - 1) * Sx + (ny - 1) * Sy) / (nx + ny -2)
t = (mx - my -2) / sqrt(S_w) / sqrt(1 / nx + 1 / ny)
t >= qt(alpha, nx + ny -2, lower.tail = FALSE)
# 结果为TRUE 即拒绝原假设
t.test(X, Y, alternative = "greater", mu = 2)

《基于R的概率统计》上机测试题
(2021年6月6日上午8:00到9:50,每题20分)

学号: 姓名:
一、坛子中有10个黑球与6个蓝球,我们无放回地取出两个球,假定每次取球时,坛子中各个球被取中的可能性是一样的,编写R代码模拟计算两个球都为黑球的概率?
(此处黏贴代码)

data = 1:16
cnt = 1
a = 0
while(cnt <= 10000){
    x = sample(x = data, size = 2, replace = FALSE)
    if(x[1] <= 10 && x[2] <= 10) a = a + 1
    cnt = cnt + 1
}
a / 10000

二、设X,Y是(0,1)区间均匀分布的独立随机变量,且已知P(X2+Y2≤1)=π/4 ,编写R代码模拟计算π的值。
(此处黏贴代码)

x = c(0, 1)
plot(x, x, type = 'o')
abline(v = 0)
abline(v = 1)
abline(h = 0)
abline(h = 1)
s = 100
a = 0
cnt <- 1
while (cnt <= 100000) {
    xx = runif(1)
    yy = runif(1)
    if( xx^2 + yy^2 <= 1) {
        a = a + 1
        points(x = xx, y = yy, pch = 20, cex = 1, col = "red")
    }
    else
        points(x = xx, y = yy, pch = 20, cex = 1, col = "green")
    cnt = cnt + 1
}
(a / 100000) * 4

三、编写R代码随机生成10000个服从均值为20的Poission分布的随机数,并画出这组数据的直方图(含核密度曲线)、箱线图,同时计算这组随机数的均值,方差、最大值、最小值。
(此处黏贴代码)

 set.seed(time(0))      # 随机数种子
rm = rpois(10000,20)
hist(rm, freq = FALSE) # 直方图
lines(density(rm))     # 核密度函数
boxplot(rm)            # 箱线图
mean(rm)               # 均值
var(rm)                # 方差
max(rm)                # 最大值
min(rm)                # 最小值

四、区间估计:假设两组样本分别来自两个独立的方差相同但未知的正态分布,编写R代码计算两个正态分布均值差的0.95的置信区间(可用rnorm函数生成样本数据)。
(此处黏贴代码)

 x = rnorm(10,2,4)
y = rnorm(10,2,4)
n1 = length(x)
n2 = length(y)
Sw = (((n1 - 1) * var(x) + (n2 - 1) * var(y)) / (n1 + n2 - 2))^2
(mean(x) - mean(y)  + qt(0.025, n1+n2-2, lower.tail = FALSE) * sqrt(Sw) * sqrt(1/n1 + 1/n2))
(mean(x) - mean(y) - qt(0.025, n1+n2-2, lower.tail = FALSE) * sqrt(Sw) * sqrt(1/n1 + 1/n2))

五、分别编写R代码(不用t.test函数)和用t.test函数完成第八章习题9的假设检验。
(此处黏贴代码)

X = c(6.6,7.0,8.3,8.2,5.2,9.3,7.9,8.5,7.8,7.5,6.1,8.9,6.1,9.4,9.1)
Y = c(7.4,5.4,8.8,8.0,6.8,9.1,6.3,7.5,7.0,6.5,4.4,7.7,4.2,9.4,9.1)
n = length(X)
d = rep(0,n)
for(i in 1:n) 
    d[i] = X[i] - Y[i]
m = mean(d)
s_d = sd(d)
t = m / s_d * sqrt(n)
t > qt(0.05, n-1, lower.tail = FALSE)

《基于R的概率统计》上机测试题
(2021年6月6日上午10:00到11:50,每题20分)

学号: 姓名:

一、投掷一枚不均匀硬币1000次,硬币正面朝上的概率为0.6,编写R代码模拟计算出现正面次数小于等于600次的概率。
(此处黏贴代码)

data = c(0, 1) 
cnt = 1; a = 0
while(cnt <= 10000){ # 多次重复试验
    # 实验1000次
    x = sample(x = data, size = 1000, prob = c(0.4, 0.6), replace = TRUE)
    if(sum(x) <= 600) 
        a = a + 1
    cnt = cnt + 1
}
a / 10000

二、坛子中有8个红球与4个白球,我们无放回地取出两个球,假定球的质量不同,每个红球的质量为10克,每个白球的质量为15克,假设每次抽到一给定球的概率是其质量除以当时坛子中球的总质量,编写R代码模拟计算两次取出的都为红球的概率?
(此处黏贴代码)

cnt = 1
a = 0
while(cnt <= 10000){
    total_weight = 8 * 10 + 4 * 15 # 总质量
    nr = 8                         # 红球数
    nw = 4                         # 白球数
    # first take
    f_t = sample(x = c(0,1), prob = c(15 * nw / total_weight, 10 * nr / total_weight), size = 1, replace = TRUE)
    if(f_t[1] == 1){               # 抽到红球 对应总质量和球的个数减少
        total_weight = total_weight - 10
        nr = nr - 1
    } else {                       # 抽到白球 对应总质量和球的个数减少
        total_weight = total_weight - 15
        nw = nw - 1
    }
    # second take                 这里和上面代码相似度较高,可以一起封装成函数,这里就不展示了
    s_t = sample(x = c(0,1), prob = c(15 * nw / total_weight, 10 * nr / total_weight), size = 1, replace = TRUE)
    if(s_t[1] == 1){               # 同上
      total_weight = total_weight - 10
      nr = nr - 1
    } else {
      total_weight = total_weight - 15
      nw = nw - 1
    }
    # 这里可以判断红球或白球的个数,也可判断质量
    # 这里判断质量
    if (total_weight == 6 * 10 + 15 * 4) # 两次都取出为红球,说明剩下6红4白,计算当前总质量即可
        a = a + 1
    cnt = cnt + 1
}
a / 10000                  # 计算概率

三、编写R代码随机生成10000个服从均值为0.2的指数分布的随机数,并画出这组数据的直方图(含核密度曲线)、箱线图,同时计算这组随机数的均值,方差、最大值、最小值。
(此处黏贴代码)

set.seed(time(0))          # 随机数种子,可要可不要
rm = rexp(10000,0.2)       # 生成随机数
hist(rm, freq = FALSE)     # 绘制直方图
lines(density(rm))         # 绘制核密度曲线
boxplot(rm)                # 绘制箱线图(这两个图只能显示一个不知道怎么解决,分布运行分别查看吧
mean(rm)                   # 均值
var(rm)                    # 方差
sd(x)                      # 标准差
max(rm)                    # 最大值
min(rm)                    # 最小值
四、区间估计:编写R代码计算两个独立正态分布方差比值的0.95的置信区间(可用rnorm函数生成具有不同方差的样本数据)。
(此处黏贴代码)
x = rnorm(10, 0, 4)        # 10是个数,0是均值,4是方差
y = rnorm(10, 0, 8)        
n1 = length(x)
n2 = length(y)
Sx = var(x)
Sy = var(y)
k = Sx/Sy
alpha = 0.95               # 置信区间
right = k / qf(1 - alpha / 2, nx - 1, ny - 1)
left = k / qf(alpha / 2, nx - 1, ny - 1)
data.frame(S_1 = Sx, S_2 = Sy, a = left, b=right)

五、分别编写R代码(不用t.test函数)和用t.test函数完成第八章习题7的假设检验。
(此处黏贴代码)

X = c(6,4,5,5,6,5,5,6,4,6,7,4)
Y = c(2,1,2,2,1,0,3,2,1,0,1,3)
alpha = 0.05
mx = mean(X)
my = mean(Y)
nx = length(X)
ny = length(Y)
Sx = var(X)
Sy = var(Y)
S_w = ((nx - 1) * Sx + (ny - 1) * Sy) / (nx + ny -2)
t = (mx - my -2) / sqrt(S_w) / sqrt(1 / nx + 1 / ny)
t >= qt(alpha, nx + ny -2, lower.tail = FALSE)
# 结果为TRUE 即拒绝原假设
# t.test结果
t.test(X, Y, alternative = "greater", mu = 2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值