5.22R语言初步学习-1

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

概述:

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

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

目录

1.安装

[2. 简单例程上手以及部分学习](#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数据框中的列进行因子化

prefsABSubject \<- factor(prefsABSubject)

prefsABPref \<- factor(prefsABPref)

查看因子化后的数据框

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,返回相应的检验结果。

相关推荐
Chef_Chen2 小时前
从0开始学习R语言--Day18--分类变量关联性检验
学习
键盘敲没电2 小时前
【IOS】GCD学习
学习·ios·objective-c·xcode
海的诗篇_2 小时前
前端开发面试题总结-JavaScript篇(一)
开发语言·前端·javascript·学习·面试
AgilityBaby3 小时前
UE5 2D角色PaperZD插件动画状态机学习笔记
笔记·学习·ue5
AgilityBaby3 小时前
UE5 创建2D角色帧动画学习笔记
笔记·学习·ue5
武昌库里写JAVA4 小时前
iview Switch Tabs TabPane 使用提示Maximum call stack size exceeded堆栈溢出
java·开发语言·spring boot·学习·课程设计
一弓虽5 小时前
git 学习
git·学习
Moonnnn.7 小时前
【单片机期末】串行口循环缓冲区发送
笔记·单片机·嵌入式硬件·学习
viperrrrrrrrrr78 小时前
大数据学习(131)-Hive数据分析函数总结
大数据·hive·学习
fen_fen8 小时前
学习笔记(26):线性代数-张量的降维求和,简单示例
笔记·学习·算法