分布式计算期中上机练习

这篇博客介绍了使用R语言进行分布式计算的上机练习,涉及概率密度曲线绘制、分布函数、随机数生成(逆变换法、接受拒绝法)以及数据处理。通过解决包括指数分布随机数生成、相关性分析和条件分组等实际问题,展示了R在统计计算和数据可视化方面的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要

  1. 在R Studio中画出分布的概率密度曲线(质量密度曲线)以及分布函数。
  2. 利用逆变换法和接受拒绝法生成随机数。
  3. 一道简单的数据处理题。

题目

在这里插入图片描述

答案

第一题

(1) 给定x=2时,求该分布的概率密度函数值基分布函数的值,利用R自带函数或自行编写函数皆可

x = 2
lambda = 1
y1 = dexp(x, lambda)  #概率密度函数值
y2 = pexp(x, lambda)  #分布函数值

1.(2) 分别绘出概率密度函数曲线和分布函数曲线(和州的范围取为0到10)

x2 = seq(0, 10, .1)
y_d = dexp(x2, lambda)
y_p = pexp(x2, lambda)
plot(x2, y_d)   #密度函数图像
lines(x2, y_d,col = 'purple')
plot(x2, y_p)   #分布函数图像
lines(x2, y_p, col = 'green')

1.(3) 利用R自带的生成指数分布随机数的命令,产生10^4个服从上述分布的随机数。随机种子的值设为1,并通过可视化方式,将所生成的随机数的统计结果与真实的概率密度函数进行对比

set.seed(1)
v = rexp(10^4, lambda)
hist(v, prob = TRUE)
lines(x2, y_d,col = 'purple')

1.(4) 利用逆变换法,生成10^4个服从上述分布的随机数,并通过可视化方式,将所生成的随机数的统计结果与真实的概率密度函数进行对比

U = runif(10000)
lambda = 1
X = -log(1-U)/lambda
hist(X, prob = TRUE)
x = seq(0,10,0.1)
lines(x,lambda*exp(-lambda*x), col = 'red')

第二题

2.(1) 利用sample函数生成服从上述分布的5000个随机数

prob = c(.3, .4, .3)
k = sample(seq(0,2,1), size = 5000, replace = TRUE, prob = c(.3, .4, .3))  #随机数
a = table(k)/5000  #随机数的频率
rbind(prob, a)  #与分布列进行对比

2.(2)利用逆变换法生成服从上述分布的5000个随机数

u = runif(5000)
y_r=integer(5000)   
x = seq(0,2,1)     
p = c(.3,.4,.3)   
f = c(0,cumsum(p))          
m=length(f)         
for(i in 1:m-1){                  #区间判断
  ind= u<=f[i+1] & u>f[i]
  y_r[ind]=x[i]
}
b = table(y_r)/5000
rbind(prob, b)  #与分布列进行对比

2.(3) 利用接受拒绝发生成服从上述分布的5000个随机数

n = 5000
k <- 0               
x <- numeric(n)
p = c(.3,.4,.3)
while (k < n) {
  u <- runif(1)
  y <- sample(0:2, 1, replace = T)   
  if ( p[y+1]/((1/3)*1.5)> u) {
    k <- k + 1
    x[k] <- y
  } 
}
c = table(x)/n
rbind(prob, c)  #与分布列进行对比

2.(4) 将上述三种结果以频率的形式,与真实的概率分布进行列表对比

rbind(prob, a , b, c)    #a sample、b inverse、 c accept-reject

第三题

3.(1) 导入数据“Advertising.csv”,并利用summary函数得到该数据从第二列到第五列的统计结果, 并请你用注释简单叙述结果的含义

dat = read.csv("advertising.csv", header = T)
dat_1 = dat[,2:5]
summary(dat_1)
#含义:电视营销平均投入147.04万元,最小投入0.70万元,最大投入296万元,近一半的选择投入在74万元到219万元之间
#广播平均投入23.264万元,最大49.6万元,最小0投入,近一半的选择投入在10万元到36.5万元之间
#报纸平均投入30.55万元,最大114万元,最小0.3万元,近一半的选择投入在12.7万元到45万元之间
#而销售额,平均销售额为14.02万元,最大销售额为27万元,最小为1.6万元

3.(2)运用pairs函数绘出该数据从第二列到第五列两两之间的散点图, 并请你用注释简单叙述结果的含义

pairs(dat_1)
#含义:销售额与电视宣传呈正相关关系,相关程度较另两个因素更高;
#销售额与广播宣传也呈一定正相关关系;
#销售额与报纸宣传相关性不强。

3.(3)结合(2)中的发现,计算对应特征之间的相关系数

cor(dat_1)

3.(4) 以sales>10为条件,将样本划分为两组,将组别定义为Adervtising的一个新特征,即为Group,并分别画出TV、Radio、Newspaper关于Group的分组箱线图

group = matrix(rep(1,200),100,1)
dimnames(group) = list(NULL,c("Group"))
group = as.data.frame(group, header = T)
dat_2 = cbind(dat_1,group)
k = 1
while(k<200){
  if(dat_2[k,4]<=10){
    dat_2[k,5] = 2
  }
  k = k+1
}
dat_2$Group = as.factor(dat_2$Group)  #factor 定性变量,“水平”
plot(dat_2$Group, dat_2$TV)           #识别到定性变量,plot就会画出箱线图
plot(dat_2$Group,dat_2$Radio)
plot(dat_2$Group, dat_2$Newspaper)

说明

没有放运行结果,可以复制运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值