5.22R语言初步学习-1

今天上课讲R语言,要干什么没讲,分析什么,目的是什么没讲。助教基本上就是让我们打开窗口,按要求抄代码指令,代码原理也没讲......再加上最近正好在学概率论与数理统计,肯定是有用的,所以还是学习总结一下吧。

概述:

R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。

与其说R是一种统计软件,还不如说R是一种数学计算的环境,因为R并不是仅仅提供若干统计程序、使用者只需指定数据库和若干参数便可进行一个统计分析。R的思想是:它可以提供一些集成的统计工具,但更大量的是它提供各种数学计算、统计计算的函数,从而使使用者能灵活机动的进行数据分析,甚至创造出符合需要的新的统计计算方法。

目录

1.安装

2. 简单例程上手以及部分学习

R预备知识

简单指令上手 

1.因子化数据帧

2.交叉制表

3.卡方检验

4.二项式检验

返回值

适用场景

注意事项

示例


1.安装

先安装R,再安装Rstudio

  R 官方网站: https://www.r-project.org/
RStudio官网 : https://www.rstudio.com/products/rstudio/download/

2. 简单例程上手以及部分学习

R预备知识

##1-变量名的命名
### 数字不能开头;
### %号是非法字符,不可以用来命名;
### .号后面不可以跟数字;


##2-赋值(赋值给谁,箭头就指向谁)
### 分别是左箭头<-(<键+-键(等号左边的那个,不要按Shift)),等号=,右箭头->
higth<-c(175,169,179,175,180,183)
higth_mean<-mean(higth)#对身高求均值


##3-变量的显示
a<-2
a #命令行直接输入变量名
print(a) #利用print()函数


##4-安装R包
install.packages()
library()


##5-文件的读取
readLines()
read.csv()#推荐使用
read.table()
read.xlsx()


##6-软件的推出与保存
### 可以直接输入q()函数;也可以右上角直接叉掉
### 有.R、.Rdata等后缀,.R一般是保存代码的,.Rdata是保存处理后的数据的。


##7-快捷键介绍
## 运行当前/被选中的代码:`Ctrl`+`Enter`
## 设置工作环境:`Ctrl`+`Shift`+`H`
## 快捷赋值 <- :`alt`+`-`
## 查找不懂的函数:`?函数`,如`?plot`
## R会自动提示你需要的东西

简单指令上手 

Tools->Global options->Pane layout 面板设置##读取文件
getwd() 获取工作目录
setwd("G:/工效学/class_R")  设置工作目录,记得引号
prefsAB <-read.csv("prefsAB.csv")
ide2 <- read.csv("ide2.csv")     读取文件##查看数据
View(prefsAB)#分类变量,需做因子化
prefsAB$Subject = factor(prefsAB$Subject)
prefsAB$Pref = factor(prefsAB$Pref)   在R中使用factor函数来创建因子
str(prefsAB)#需要对类别数据进行因子化,以实现研究对象的分组、分类计算
#可以看到有多少类别和水平##基本统计
summary(prefsAB)
plot(prefsAB$Pref) # 画一个基本的柱状图##执行检验
prfs = xtabs( ~ Pref, data=prefsAB)
prfs
chisq.test(prfs)
binom.test(prfs)install.packages("plyr")              下载程序包
library(plyr)         加载包ddply(ide2,~IDE,summarise,Time.mean=mean(Time),Time.sd=sd(Time))
hist(ide2[ide2$IDE == "VStudio",]$Time)
hist(ide2[ide2$IDE == "Eclipse",]$Time)
plot(Time ~ IDE,data=ide2)#首先是正态性假设
# Shapiro-Wilk normality test(夏皮罗-威尔克检验)
shapiro.test(ide2[ide2$IDE == "VStudio",]$Time) #H0:研究对象符合正态分布。
shapiro.test(ide2[ide2$IDE == "Eclipse",]$Time)
## 满足正态性假设
m = aov(Time ~ IDE, data=ide2) # fit model
shapiro.test(residuals(m)) # test residuals
qqnorm(residuals(m)); qqline(residuals(m))

读取CSV文件、查看数据框、对数据框的特定列进行因子化,并对因子化后的数据进行摘要和绘图。

1.因子化数据帧

因子是用于表示分类数据的类型,这对于分类分析和统计建模非常有用。

factor 函数用于向量或单个列,而不是整个数据框。如果你尝试对整个数据框应用 factor 函数,会遇到错误。你需要对数据框中的特定列进行因子化,而不是对整个数据框。

# 读取CSV文件
prefsAB <- read.csv("prefsAB.csv")
ide2 <- read.csv("ide2.csv")

# 查看数据框内容
View(prefsAB)
View(ide2)

# 对prefsAB数据框中的列进行因子化
prefsAB$Subject <- factor(prefsAB$Subject)
prefsAB$Pref <- factor(prefsAB$Pref)

# 查看因子化后的数据框
View(prefsAB)

# 获取数据框的摘要信息
summary(prefsAB)

# 绘制prefsAB$Pref的图表
plot(prefsAB$Pref)

plot(prefsAB$Pref)绘制 prefsAB 数据框中 Pref 列的条形图有助于可视化每个因子水平的频数。 

summary(ide2) 用于生成并显示数据框的摘要信息,包括每列的统计信息。对于因子列,这将显示每个因子水平的频数。

head() 函数用于查看数据集的开头部分,它默认显示数据框的前六行。这对于快速查看数据集的结构和内容非常有用,可以帮助你了解数据的组织方式和其中包含的信息。

str(ide2) 函数显示了关于数据框 ide2 结构的摘要信息。在这个摘要中,我们可以看到:

  • 数据框 ide2 包含了 40 行观察值(observation)和 3 个变量(variables)。
  • 第一个变量是 Subject,是一个整数(int),表示实验参与者的编号。
  • 第二个变量是 IDE,是一个字符向量(chr),表示实验中使用的集成开发环境(IDE)的名称。
  • 第三个变量是 Time,是一个整数(int),表示实验中使用该 IDE 所花费的时间(以某个单位表示,可能是秒)。

summary(ide2) 函数提供了关于数据框 ide2 中数值变量的摘要统计信息。让我们逐一解释这个摘要:

  • Subject: 这是实验参与者的编号。摘要显示了每个不同值的频数。例如,出现了1次的有1、2、3、4等,没有显示的Subject编号表示频数为1。"Other"行表示其他出现次数少于5次的编号。

  • IDE: 这是实验中使用的集成开发环境(IDE)的名称。摘要显示了每个不同值的频数。在你的数据中,有20次使用Eclipse和20次使用VStudio。

  • Time: 这是实验中使用每个IDE所花费的时间。摘要包括了五个统计量:最小值(Min.)、第一四分位数(1st Qu.)、中位数(Median)、平均值(Mean)、第三四分位数(3rd Qu.)和最大值(Max.)。

2.交叉制表

prfs = xtabs(~Pref,data=prefsAB)

chisq.test(prfs) 

prfs = xtabs(~Pref, data=prefsAB) 执行了一个交叉制表的操作,它会创建一个交叉制表,显示了在 prefsAB 数据框中 Pref 列中各个水平(A 和 B)的频数。xtabs函数用于快速计算一个或多个变量的频率,响应变量~自变量。

  • xtabs 函数是 R 中用来创建交叉制表的函数。
  • ~Pref 表示要对数据框 prefsAB 中的列 Pref 进行交叉制表。
  • data=prefsAB 表示这个操作应该在 prefsAB 数据框中进行。

因此,prfs 变量中存储了一个交叉制表的结果,显示了在 prefsAB 数据框中 Pref 列中各个水平(A 和 B)的频数。

3.卡方检验

卡方检验的目的: 卡方检验用于检验观察到的类别数据是否与期望频率有显著差异。其基本思想是比较观察到的频数(observed frequencies)和期望频数(expected frequencies),并通过计算一个统计量来评估这种差异是否显著。

chisq.test 函数对 prfs 执行卡方检验

输出如下:

Chi-squared test for given probabilities

data:  prfs
X-squared = 17.067, df = 1, p-value = 3.609e-05

结果分析:

  • X-squared = 17.067:这是计算出的卡方统计量。
  • df = 1:这是自由度。
  • p-value = 3.609e-05:这是计算出的p值。

由于p值非常小(远小于0.05),我们可以拒绝零假设,认为 Pref 变量中的A和B类别的出现频率有显著差异。

通过卡方检验,能够确定 prefsAB 数据中 Pref 列的两个类别(A和B)是否存在显著的频数差异。结果显示,A和B的出现频率差异显著,这表明在这个数据集中A和B的分布并不是随机的,可能存在某种偏好或影响因素。

4.二项式检验

binom.test 函数用于执行二项式检验,也称为精确二项检验。它用于检验一个二项分布中的成功概率是否等于某个给定的值。

binom.test(x, n, p = 0.5, alternative = c("two.sided", "less", "greater"), conf.level = 0.95)

  • x: 成功的次数,或者是一个长度为2的向量,包含两个元素,分别是成功的次数和总的试验次数。
  • n: 总的试验次数。如果 x 是一个长度为2的向量,则该参数被忽略。
  • p: 假设的成功概率。默认为0.5。
  • alternative: 检验的备择假设类型,可以是 "two.sided"(双侧检验,默认)、"less"(左侧检验)、或者"greater"(右侧检验)。
  • conf.level: 置信水平,默认为0.95,表示95%的置信水平。

返回值

函数返回一个包含二项式检验的结果的列表,其中包括:

  • estimate: 成功概率的估计值。
  • p-value: 检验的p值。
  • conf.int: 成功概率估计的置信区间。
  • method: 使用的检验方法的名称。
适用场景
  • 当你有一组二项分布的数据,想要检验其中的成功概率是否等于某个给定的值时,可以使用二项式检验。
  • 常见的应用场景包括医学研究、产品测试、市场调查等。
注意事项
  • 在执行二项式检验之前,确保你的数据满足二项分布的假设,即每次试验之间是相互独立的,且成功概率在各次试验中保持不变。
  • 对于小样本数据
    示例

    假设你有一组硬币抛掷的数据,你想要检验硬币正面朝上的概率是否等于0.5。你可以使用 binom.test 函数来进行检验:

  • # 假设你投掷了100次硬币,正面朝上的次数是45次 binom.test(45, 100, p = 0.5)

    binom.test(45, 100, p = 0.5)
    

    这将会执行一个双侧的二项式检验,检验硬币正面朝上的概率是否等于0.5,返回相应的检验结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/329592.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CLIP论文学习

学习来自B站bryanyzhu

【list】list库介绍 + 简化模拟实现

本节博客先对list进行用法介绍&#xff0c;再在库的基础上简化其内容和形式&#xff0c;简单进行模拟实现&#xff0c;有需要借鉴即可。 目录 1.list介绍1.1 list概述1.2相关接口的介绍 2.简化模拟实现3.各部分的细节详述3.1结点3.2迭代器细节1&#xff1a;迭代器用原生指针还是…

风控指南:国内车险欺诈呈现四大趋势

目录 车险欺诈呈现内外勾结的团伙化 防范车险欺诈需要多重合作 保险企业需要提升反欺诈能力 监管部门需要加强协同合作 2024年4月11日&#xff0c;国家金融监督管理总局官网发布国家金融监督管理总局关于《反保险欺诈工作办法&#xff08;征求意见稿&#xff09;》公开征求意见…

Spark-广播变量详解

Spark概述 Spark-RDD概述 1.为什么会需要广播变量&#xff1f; 广播变量是为了在分布式计算环境中有效地向集群中的所有节点广播大型只读数据集而设计的。 在分布式环境中&#xff0c;通常会遇到需要在所有节点上使用相同的数据集的情况&#xff0c;但是将这些数据集复制到每个…

ChatGPT移动应用收入在GPT-4o发布后迎来最大涨幅

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Redis崩溃后,如何进行数据恢复的?no.24

本课时我们主要学习通过 RDB、AOF、混合存储等数据持久化方案来解决如何进行数据恢复的问题。 Redis 持久化是一个将内存数据转储到磁盘的过程。Redis 目前支持 RDB、AOF&#xff0c;以及混合存储三种模式。 RDB Redis 的 RDB 持久化是以快照的方式将内存数据存储到磁盘。在…

SpringCloud系列(27)--OpenFeign日志增强

前言&#xff1a;在上一章节中我们简单的介绍了如何去调节OprnFeign的连接超时时间&#xff0c;在OpenFeign的使用过程中可能需要对Feign接口的调用情况进行监控和输出&#xff0c;这时候就需要对OpenFeign进行日志增强处理&#xff0c;所以本节的内容即是关于OpenFeign的日志增…

智能科技的新风潮:探索Web3与物联网结合

引言 随着科技的不断进步和创新&#xff0c;智能科技正成为新时代的主旋律。在这个充满活力和变革的时代&#xff0c;Web3技术与物联网的结合成为了一股新的风潮。本文将深入探讨这一新趋势&#xff0c;揭示Web3与物联网结合的意义、挑战和前景。 Web3技术的特点与优势 区块链…

Nginx企业级负载均衡:技术详解系列(11)—— 实战一机多站部署技巧

你好&#xff0c;我是赵兴晨&#xff0c;97年文科程序员。 工作中你是否遇到过这种情况&#xff1a;公司业务拓展&#xff0c;新增一个域名&#xff0c;但服务器资源有限&#xff0c;只能跟原有的网站共用同一台Nginx服务器。 也就是说两个网站的域名都指向同一台Nginx服务器…

spring boot 之 结合aop整合日志

AOP 该切面仅用于请求日志记录&#xff0c;若有其他需求&#xff0c;在此基础上扩展即可&#xff0c;不多逼逼&#xff0c;直接上代码。 引入切面依赖 <!-- 切面 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>sp…

excel里如何将数据分组转置?

这个表格怎样转换为下表&#xff1f;按照国家来分组&#xff0c;把不同年份对应的不同序列值进行转置&#xff1f;&#xff1f; 这演示用数据透视表就完成这个数据转换。 1.创建数据透视表 选中数据中任意单元格&#xff0c;点击插入选项卡&#xff0c;数据透视表&#xff0c;…

Day21:Leetcode513.找树左下角的值 +112. 路径总和 113.路径总和ii + 106.从中序与后序遍历序列构造二叉树

LeetCode&#xff1a;513.找树左下角的值 解决方案&#xff1a; 1.思路 在遍历一个节点时&#xff0c;需要先把它的非空右子节点放入队列&#xff0c;然后再把它的非空左子节点放入队列&#xff0c;这样才能保证从右到左遍历每一层的节点。广度优先搜索所遍历的最后一个节点…

【机器学习】—机器学习和NLP预训练模型探索之旅

目录 一.预训练模型的基本概念 1.BERT模型 2 .GPT模型 二、预训练模型的应用 1.文本分类 使用BERT进行文本分类 2. 问答系统 使用BERT进行问答 三、预训练模型的优化 1.模型压缩 1.1 剪枝 权重剪枝 2.模型量化 2.1 定点量化 使用PyTorch进行定点量化 3. 知识蒸馏…

CentOS7安装Redis

安装Redis&#xff0c;并使用PHP连接Redis 一、准备工作 1、安装LNMP 参考&#xff1a;搭建LNMP服务器-CSDN博客文章浏览阅读876次&#xff0c;点赞14次&#xff0c;收藏4次。LNMP 架构通常用于构建高性能、可扩展的 Web 应用程序。Nginx 作为前端 Web 服务器&#xff0c;负…

正则表达式(知识总结篇)

本篇文章主要是针对初学者&#xff0c;对正则表达式的理解、作用和应用 正则表达式&#x1f31f; 一、&#x1f349;正则表达式的概述二、&#x1f349;正则表达式的语法和使用三、 &#x1f349;正则表达式的常用操作符四、&#x1f349;re库主要功能函数 一、&#x1f349;正…

科技查新中医学科研项目查新点如何确立与提炼?案例讲解

一、前言 医学科技查新包括立项查新和成果查新两个部分&#xff0c;其中医学立项查新&#xff0c;它是指在医学科研项目申报开题之前&#xff0c;通过在一定范围内进行该课题的相关文献检索 ( 可以根据项目委托人的具体要求&#xff0c;进行国内检索或者进行国外检索 ) &#x…

深度学习之基于Matlab的BP神经网络交通标志识别

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 随着智能交通系统&#xff08;ITS&#xff09;的快速发展&#xff0c;交通标志识别&#xff0…

1941springboot VUE 服务机构评估管理系统开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot VUE服务机构评估管理系统是一套完善的完整信息管理类型系统&#xff0c;结合springboot框架和VUE完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代…

Python | Leetcode Python题解之第108题将有序数组转换为二叉搜索树

题目&#xff1a; 题解&#xff1a; class Solution:def sortedArrayToBST(self, nums: List[int]) -> TreeNode:def helper(left, right):if left > right:return None# 选择任意一个中间位置数字作为根节点mid (left right randint(0, 1)) // 2root TreeNode(nums…

linux命令中arj使用

arj 用于创建和管理.arj压缩包 补充说明 arj命令 是 .arj 格式的压缩文件的管理器&#xff0c;用于创建和管理 .arj 压缩包。 语法 arj(参数)参数 操作指令&#xff1a;对 .arj 压缩包执行的操作指令&#xff1b;压缩包名称&#xff1a;指定要操作的arj压缩包名称。 更多…