R语言期末考试复习题第一天整理内容(自己整理+参考博主:紧到长不胖 )请多关注 紧到长不胖 ,每天有惊喜!

2023-10-31


R语言期末考试复习题第一天整理内容


#期末考试例题#

#1.写出函数来计算15,21,39,45,17的和:分别用for循环和while循环。
s=c(15,21,39,45,17)
sum(s)
he=0
for(i in 1:length(s))
{
  he=he+s[i]
}
print(he)

s=c(15,21,39,45,17)
sum(s)
he=0
i=1
while(i<=length(s))
{
  he=he+s[i]
  i=i+1
}
print(he)


#2.用循环程序求出1——15之间能被3整除数的和,并输出结果。
he=0
for(i in 1:15)
{
  if(i%%3==0){
    he=he+i
  }
}
print(he)

#3.写出一个函数计算n的阶乘。
jiecheng=function(n){
  chengji=1
  for(i in 1:n){
    chengji=chengji*i
  }
  return(chengji)
}
#4.给出任意两组数,写出函数通用公式计算两组数的相关系数。
#5.给定一个圆半径(r)>=0,计算并输出圆的面积和周长,否则,输出提示信息。


# 第一次作业内容:写出比较两个总体均值差异显著性检验的函数,
# 要求函数输入参数只有两个,一个为数据文件data,另一个是显著性水平,默认值设置为0.05。
# 输出结果包括两个样本均值,两个两个样本方差,合并方差,检验统计量,t分布临界值和结论


f<-function(data,a){
  x<-data[[1]]
  y<-data[[2]]
  n1<-length(x);n2<-length(y)
  meanx<-mean(x);meany<-mean(y)
  varx<-var(x);vary<-var(y)
  var<-((n1-1)*varx+(n2-1)*vary)/(n1+n2-2)
  t0<-(meanx-meany)/sqrt(var*(1/n1+1/n2))
  t<-qt(p=1-a,df=n1+n2-2)
  Z<-ifelse(t0>=t,"结论为拒绝原假设,即两个总体均值有显著差异!","结论为不拒绝原假设!")
  data.frame(meanx,meany,varx,vary,var,t0,t,Z)
}
A<-c(79.98,80.04,80.02,80.04,80.03,80.03,80.04,79.97,80.05,80.03,80.02,80.00,80.02)
B<-c(80.02,79.94,79.98,79.97,79.97,80.03,79.95,79.97)
data<-list(A,B)
f(data,0.05)


#第二次作业:
# 计算(模拟数据)的平均误差 
# 模拟出5000个Y=beta1*x1+beta2*x2;
k = 100 # 定义实验次数
beta_x1 = c() # 定义空列
beta_x2 = c()
for (i in 1:k) {
  beta1 = 0.8 # 设置真实系数
  beta2 = 1.8
  x1 = rnorm(100,5,3) # 产生随机数
  x2 = rnorm(100,100,10)
  error = rnorm(100,0,1) # 产生随机误差
  y = 1.5+0.8*x1+1.8*x2+error
  data1 = data.frame(x1,x2,y) # 构建数据框
  res = lm(y~x1+x2,data = data1)
  res = summary(res)
  beta1_r = (res$coefficients[2]-beta1)^2 # 取估计的系数
  beta2_r = (res$coefficients[3]-beta2)^2
  beta_x1 = c(beta_x1,beta1_r)# 追加成向量
  beta_x2 = c(beta_x2,beta2_r)
  
}
MSEx1 = sum(beta_x1)/length(beta_x1) # 求MES的公式
MSEx2 = sum(beta_x2)/length(beta_x2)
message('x1的MSE为:',MSEx1)
message('x2的MSE为:',MSEx2)








#第三次作业:
# 计算lnx在5到9上的积分:

# 方法一:蒙特卡洛法
# 在长度为4,高度为ln(9)的矩形上进行随机采点,每个点有对应的x,y坐标。
# 当随机点的y值低于其x值取对数(lnx))时,则该点落入目标区域面积,目标区域采点数+1,
# 最后以:(落入目标区域点数)/(总点数) * 矩形面积,则得到近似的目标区域面积。
decisionCondition = function(a){
  a[2]-log(a[1])
}
# 用于判断在面积内的函数

n = 1000
x = runif(n,5,9)
y = runif(n,0,log(9))
A = cbind(x,y)
A
b = apply(A, 1, decisionCondition)
b
mean(b<0)*4*log(9) # 注意这里,将算出来的面积乘上总面积得到积分区域面积




# 方法二:微元法
# 沿x轴上的5-9区间,将目标区域面积分割为多个曲边梯形,计算出单个曲边梯形的面积并进行加总。
# 对于第i个曲边梯形而言,上底和下底之和为y[i]+y[i+1],对应梯形的高即为分割的单个区间长度
# ,为(9-5)/n,此梯形的面积即为((y[i]+y[i+1])*(9-5)/n)/2。依次递推,将全部n-1个梯形面积进行加总。
n=10000
x = runif(n,5,9)
x
mean(log(x))*4 # 乘以(b-a)

#编写函数计算h(x,n)=1+x+x^2+...+x^n
fun1=function(x,n){
  s=0
  for(i in 0:n){
    s=s+x^i
  }
  message("前n项数的和为:",s)
}
fun1(2,4)#调用函数


# x向量的值为100个5以内(包括5)的随机整数,
# 产生一个长度与x相等的y向量,
# 对于x中值为3的元素,y的对应元素赋值为0,其余赋值为1。
# 计算y中有多少1。
x=round(runif(100,0,5.1))
y=c()
x[which(x!=3)]=1# x其余赋值为1
x[which(x==3)]=0# x中值为3的元素,y的对应元素赋值为0
x
#赋值顺序不能错。
message("y中有",sum(x),"个1")

#(1)读入数据C:/Users/Administrator/Desktop/lm程序/eg2.1用到的数据csv格式"
# 建立y关于x1、x2、x3、x4的线性回归方程。

 - [问题标注 ] #此处导入数据文档有误,故采用复制粘贴手法,但得到程序运行结果仍然有问题。
 - (问题已解决:
 - library(openxlsx)
setwd("C:/Users/Administrator/Desktop/lm程序")
data2=read.xlsx("用到的数据1.xlsx", sheet =1,colNames=TRUE)#
data2=lm(y~x1+x2+x3+x4,data=data2)
summary(data2)
 - )

# library(openxlsx)
# setwd("C:/Users/Administrator/Desktop/lm程序")
# data2=read.xlsx("用到的数据1.xlsx", sheet =1,colNames=TRUE)

data2=read.table("clipboard",header=T)
lm.salary=lm(y~x1+x2+x3+x4,data=data2)
summary(lm.salary)

#(2)采用逐步回归法建立y关于x1、x2、x3、x4的线性回归方程,
# 并对方程和回归系数进行显著性检验。
data.lm1=step(lm.salary,direction='forward')
summary(data.lm1)
data.lm2=step(lm.salary,direction='backward')
summary(data.lm2)
data.lm3=step(lm.salary,direction='both')
summary(data.lm3)


#使用while循环求1+2+...+100的和
i=1
s=0
while(i<=100){
  s=s+i
  i=i+1
}
print(s)

#使用for求1+2+...+100的和
data1.1=c(1:100)
fun=function(data1.1){
  s=0
  for(i in 1:length(data1.1)){
    s=s+data1.1[i]
  }
  message("1到100的和为",s)
}
fun(data1.1)


# 编写函数,对任一个百分制的成绩M,将其转换成对应的等级,
# 具体转换规则如下:
# 90-100为A; 80-89为B; 70-79为C; 60-69为D; 0-59为E;
funj=function(chengji){
  if(90<=chengji){
    print("等级为A")
  }
  else if(80<=chengji){
    print("等级为B")
  }
  else if(70<=chengji){
    print("等级为C")
  }
  else if(60<=chengji){
    print("等级为D")
  }
  else{
    print("等级为E")
  }
}
funj(59)




#编写函数出任意给定x的值,
# 计算正态分布密度函数N()的值。
funN=function(x,u,sigma){
  y=(sqrt(2*pi)*sigma)^(-1)*exp(-(x-u)^2/(2*sigma^2))
  return(y)
}
funN(1,0,1)
#校验
dnorm(1,0,1)
#dnorm(x, mean = 0, sd = 1, log = FALSE) 
# 的返回值是正态分布概率密度函数值,



#用蒙特卡洛法计算sin x从2-3上积分的值
#方法1:
decisionCondition=function(a){
  a[2]-sin(a[1])
}
n=10000
x=runif(n,2,3)
y=runif(n,0,sin(2))
A=cbind(x,y)
A
b=apply(A,1,decisionCondition)
mean(b<=0)*1*sin(2)#将算出来的面积乘上总面积得到积分区域面积

#方法2:
n=10000
x=runif(n,2,3)
mean(sin(x))*(3-2)


#用蒙特卡洛法计算x^2从2-3上的积分
#方法1:
decisionCondition=function(a){
  a[2]-(a[1])^2
}
n=10000
x=runif(n,2,3)
y=runif(n,0,9)
A=cbind(x,y)
A
b=apply(A,1,decisionCondition)
mean(b<=0)*1*9

#方法2:
n=10000
x=runif(n,2,3)
mean(x^2)*(3-2)



#给定一组数,检验其均值等于某一常数(t检验)
# μ0 = 0.5,进行双侧检验,
# X=c(0.497,0.506,0.524,0.518,0.498,0.511,0.520,0.515,0.512)
# μ = 0.5 

data=c(0.497,0.506,0.524,0.518,0.498,0.511,0.520,0.515,0.512)
funt=function(data,alpha,u){
  x_bar=mean(data)
  t_value=(x_bar-u)/(sd(data)/sqrt(length(data)))
  if(abs(t_value)>qt(1-alpha/2,length(data)-1)){
    print('拒绝原假设')
  }
  else{
    print('接受原假设')
  }
}
funt(data,0.975,0.5)

# dnorm(x, mean = 0, sd = 1, log = FALSE) 
# 的返回值是正态分布概率密度函数值,
# 比如dnorm(z)则表示:
# 标准正态分布密度函数f(x)在x=z处的函数值。

# pnorm(n, mean = 0, sd = 1,lower.tail = TRUE, log.p = FALSE)为概率分布函数。pnorm(z)等价于P[x<=z]
# qnorm(n, mean = 0, sd = 1,lower.tail = TRUE, log.p = FALSE)为pnorm的逆运算,返回给定P的下分位点z。
# rnorm(n, mean = 0, sd = 1)生成符合正态分布的随机数



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R语言期末考试复习题第一天整理内容(自己整理+参考博主:紧到长不胖 )请多关注 紧到长不胖 ,每天有惊喜! 的相关文章

  • 华为OD机试-求满足要求的最长子串

    题目描述 给定一个字符串 只包含字母和数字 按要求找出字符串中的最长 连续 子串的长度 字符串本身是其最长的子串 子串要求 1 只包含1个字母 a z A Z 其余必须是数字 2 字母可以在子串中的任意位置 如果找不到满足要求的子串 如全是

随机推荐

  • @Bean 的用法

    Bean是一个方法级别上的注解 主要用在 Configuration注解的类里 也可以用在 Component注解的类里 添加的bean的id为方法名 定义bean 下面是 Configuration里的一个例子 Configuration
  • 【Vue学习笔记7】Vue3中如何开发组件

    重点学习 vue3 0之组件通信机制defineProps 组件接收外部传来的参数 defineEmits 向组件外部传递参数 1 评级组件第一版 简单的评级需求 只需要一行代码就可以实现 slice 5 rate 10 rate 只需要传
  • 动态规划(最大子序和 && 乘积最大子序列)

    一 最大子序列和 给定一个整数数组 nums 找到一个具有最大和的连续子数组 子数组最少包含一个元素 返回其最大和 示例 输入 2 1 3 4 1 2 1 5 4 输出 6 解释 连续子数组 4 1 2 1 的和最大 为 6 https l
  • 使用三种方法获取远程连接服务器上的文件

    文章目录 概要 alt p sz 使用kettle软件 概要 第一种方法 alt p 第二种方法 sz 第三种方法 使用kettle软件 alt p 在crt连接页面使用快捷键 alt p 打开sftp页面 使用例如 get a txt 获
  • LeetCode(力扣)62. 不同路径Python

    LeetCode62 不同路径 题目链接 代码 题目链接 https leetcode cn problems unique paths 代码 递归 class Solution def uniquePaths self m int n i
  • C++忘记返回值导致异常bug

    问题 在C 函数实现时 定义一个函数如下 bool MCUSerialImpl InitDevInfo devInfo std make shared
  • 【MySQL】不就是多表查询

    前言 嗨 小伙伴们大家好呀 忙碌的一周就要开始 在此之前我们学习的MySQL数据库的各种操作都是在一张表之中 今天我们学习要对多张表进行相关操作 相比较于单一的表来说 多张表操作相对复杂一些 我相信只要认真学习多表查询也不再话下 目录 目录
  • 2023年Python面试题(爬虫)

    爬取数据后使用哪个数据库存储数据的 为什么 MongoDB 是使用比较多的数据库 这里以 MongoDB 为例 大家需要结合自己真实开发环境回答 原因 1 与关系型数据库相比 MongoDB 的优点如下 1 弱一致性 最终一致 更能保证用户
  • Linux DRM框架详解

    Linux DRM框架详解
  • c++ 给定n个十六进制正整数,输出它们对应的八进制数。

    问题描述 给定n个十六进制正整数 输出它们对应的八进制数 输入格式 输入的第一行为一个正整数n 1 lt n lt 10 接下来n行 每行一个由09 大写字母AF组成的字符串 表示要转换的十六进制正整数 每个十六进制数长度不超过100000
  • 【Node.js】模块化:

    文章目录 1 模块化的基本概念 2 Node js 中模块化 1 Node js 中模块的分类 2 加载模块 3 模块作用域 4 向外共享模块作用域中的成员 5 模块化规范 3 npm与包 包 依赖 插件 1 包的基本知识 2 开发属于自己
  • 进程池、线程池、协程

    什么是池 保证计算机硬件安全的情况下最大限度利用计算机 降低了程序的运行效率 但保证了硬件的安全 受限于硬件的物理极限 硬件的发展跟不上软件的速度 迫不得已提出了池的概念 进程池 线程池 提交任务的方式 同步 提交任务之后 原地等待任务的返
  • 多线程 UDP传输速率 实验

    现阶段问题 丢包问题 丢包率达到50 但是ping的时候反应良好 1 分析UDP丢包的原因 1 现象是每隔一个包丢失一个 所以考虑是否是缓冲区的问题 答 用不同数据包大小10 100 500 1500发现都是收一个丢一个 说明缓冲区大小并不
  • android 手机内存64实际不到,为什么你的手机内存总是达不到64G?丢失的内存去哪了?详细解读...

    近些年手机各项参数快速发展 除了屏幕 处理器 相机等主要零部件性能提升的同时 我们手机的内存也是越来越大 从最刚开始的2GB 到4G 8G 16与32G 再到现在标配64G起步 手机软件生态越来越完善 现在64G的手机也变得捉襟见肘 但是当
  • Linux man 命令详解

    man 命令 Linux man 命令用于显示 Linux 操作系统中的手册页 manual page 它提供了对 Linux 操作系统中各种命令 函数 库等的详细说明 man 命令有许多参数 参数介绍 下面简要介绍一下主要参数的功能 f
  • PyTorch自制数据集

    PyTorch加载数据主要分为两类 只有图片的数据集以及含有csv保存标签的数据集 只有图片的数据集又分为两类 标签在文件夹上和标签在图片名上 学习地址 1 标签在文件夹上 此情况下导入数据集 只需要调用PyTorch中的ImageFold
  • c/c++ 编程软件(IDE)推荐

    声明 本文软件推荐是为初学编程萌新推荐 以帮助新手快速搭建c c 开发环境 掌握语法 推荐原则并不适用与生产领域 另 萌新直接推荐小熊猫C 下载 英语不好可使用小龙dev 小龙 Dev C 中文主页 都是下载即用 优缺点文中均有介绍 0 首
  • 网页版权信息 日期格式

    1 格式 Copyright dates by author owner 例子 2022 baidu 2005 2015 Tencent All Rights Reserved Copyright 1996 2014 SINA Corpor
  • unity3D 音效的设置 音效的开关 制作声音的开关按钮

    使物体图 如图所示 设置界面如下 每一个 列表设置如下 sudio 的设置如下图 Background 的设置如下图 Checkmark的设置如下图 Text 的设置如下图 代码部分 引用是设置 如图所示 音效的开关的设计代码 Game M
  • R语言期末考试复习题第一天整理内容(自己整理+参考博主:紧到长不胖 )请多关注 紧到长不胖 ,每天有惊喜!

    R语言期末考试复习题第一天整理内容 期末考试例题 1 写出函数来计算15 21 39 45 17的和 分别用for循环和while循环 s c 15 21 39 45 17 sum s he 0 for i in 1 length s he