R语言之数值型描述分析

news2024/11/25 2:31:01

文章和代码已经归档至【Github仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 R语言 也可获取。

在分析之前,先将数据集 birthwt 中的分类变量 low、race、smoke、ht 和 ui 转换成因子。

library(MASS)
data(birthwt)
str(birthwt)

options(warn=-1)
library(dplyr)
birthwt <- birthwt %>% 
  mutate(low = factor(low, labels = c("no", "yes")),
         race = factor(race, labels = c("white", "black", "other")),
         smoke = factor(smoke, labels = c("no", "yes")),
         ht = factor(ht, labels = c("no", "yes")),
         ui = factor(ui, labels = c("no", "yes")))
str(birthwt)

获取数据框里每个变量的常用统计量是一种快速探索数据集的方法,这可以通过下面的一个命令实现。

summary(birthwt)

函数 summary( )可以对每个变量进行汇总统计。对于数值型变量,如 age、lwt、plt、ftv 和 bwt,函数 summary( )给出最小值、下四分位数、中位数、均值、上四分位数和最大值;对于分类变量,如 low、race、smoke、ht 和 ui,给出的则是频数统计表。

epiDisplay 包的函数 summ( )作用于数据框可以得到另一种格式的汇总输出,它将变量按行排列,把最小值和最大值放在最后两列以方便查看数据的全距。

library(epiDisplay)
summ(birthwt)

需要注意的是,对于因子型的变量,函数 summ( )把变量的各个水平当作数值计算统计量。

数值型变量的描述性统计分析

本节将讨论数值型变量的集中趋势、离散程度和分布形状等。这里我们关注 3 个连续型变量:年龄(age)、母亲怀孕前体重(lwt)和婴儿出生时体重(bwt)。

cont.vars <- dplyr::select(birthwt, age, lwt, bwt)

接下来,先计算这 3 个变量的描述性统计量,然后按照母亲吸烟情况(smoke)分组考查描述性统计量。这里 smoke 是一个二分类变量,我们在把它转换成因子时已经为其两个水平定义了标签:“no”和“yes”。

除了上面提到的函数 summary( ),R 中还有很多用于计算特定统计量的函数(见第二章)。例如,计算变量 age 的样本量、样本均值和样本标准差:

length(cont.vars$age)
mean(cont.vars$age)
sd(cont.vars$age)

我们还可以用函数 sapply( )同时计算数据框中多个变量的指定统计量。例如,计算数据框 cont.vars 中各个变量的样本标准差:

sapply(cont.vars, sd)

基本包中没有提供计算偏度和峰度的函数,我们可以根据公式自己计算,也可以调用其他包里的函数计算,例如 Hmisc 包、psych 包和 pstecs 包等。这些包提供了种类繁多的计算统计量的函数,这几个包在首次使用前需要先安装。下面以 psych 包为例进行说明。psych 包被广泛应用于计量心理学。

psych 包里的函数 describe( )可以计算变量忽略缺失值后的样本量、均值、标准差、中位数、截尾均值、绝对中位差、最小值、最大值、全距、偏度、峰度和均值的标准误等。

例如:

R.Version()
library(psych)
describe(cont.vars)

在很多时候我们还想计算某个分类变量各个类别下的统计量。在 R 中完成这个任务有多种方式,下面先从基本包的函数 aggregate( )和 tapply( )开始介绍。

aggregate(cont.vars, by = list(smoke = birthwt$smoke), mean)
aggregate(cont.vars, by = list(smoke = birthwt$smoke), sd)

函数 aggregate( )中的参数 by 必须设为 list。如果直接使用 list(birthwt$smoke),则上面分组列的名称将会是“Group.1”而不是“smoke”。我们还可以在 list 里面设置多个分类变量,例如:

aggregate(cont.vars, 
          by = list(smoke = birthwt$smoke, race = birthwt$race), 
          mean)

这里的分类变量有 2 个,其中 smoke 有 2 个类别,race 有 3 个类别,上面的命令按照这两个变量各类别的所有组合(共 6 组)计算均值。

当然,你也可以使用下面任一方式写:

aggregate(birthwt[,c("age","lwt","bwt")], 
          by = list(smoke = birthwt$smoke, race = birthwt$race), 
          mean)

aggregate(cbind(age, lwt, bwt)~smoke+race, birthwt, mean)

函数 tapply( )可以实现类似的功能,不同的是它的第一个参数必须是一个变量,第二个参数名是 INDEX 而不是 by。例如,计算变量 bwt 在母亲不同吸烟情况下的均值,可以输入:

tapply(birthwt$bwt, INDEX = birthwt$smoke, mean)
# no 3055.69565217391 yes 2771.91891891892

epiDisplay 包里的函数 summ( )也可以实现类似的功能,不同的是该函数里的统计量是固定的,而且函数的输出包含一个按照分类变量绘制的有序点图,如下图所示。

summ(birthwt$bwt, by = birthwt$smoke)

用函数 summ( )输出的有序点图探索数值型变量的分布尤其是数据的密集趋势和异常值非常方便。

psych 包里的函数 describeBy( )也可以分组计算与函数 describe( )相同的统计量,例如:

describeBy(cont.vars, birthwt$smoke)

函数 describeBy( )虽然很方便,但它不能指定任意函数,所以扩展性较差。实际上,在第 3 章介绍的 dplyr 包里的函数 group_by( )和 summarise( )就能非常灵活地计算分组统计量。例如:

library(dplyr)
birthwt %>%
  group_by(smoke) %>% 
  summarise(Mean.bwt = mean(bwt), Sd.bwt = sd(bwt))

数据分析者可以选择自己最习惯的方式计算和展示描述性统计量。最后一种方式的思路最清晰,结果最简洁。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

固定资产管理分析怎么写?

对企业内的固定资产进行全面的统计和分析&#xff0c;包括设备、装修、维修等方面的信息&#xff0c;有助于企业进行资产管理和风险控制。  通过该软件&#xff0c;用户可以实现对资产的跟踪和管理&#xff0c;如实时监测设备的使用情况&#xff0c;提高设备利用率和维护效率…

python基础教程:深浅copy的详细用法

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 1.先看赋值运算 l1 [1,2,3,[barry,alex]] l2 l1l1[0] 111 print(l1) # [111, 2, 3, [barry, alex]] print(l2) # [111, 2, 3, [barry, alex]]l1[3][0] wusir print(l1) # [111, 2, 3, [wusir, alex]] print(l2)…

嵌入式linux轻量级sshd服务Dropbear交叉编译

下载 zlib-1.2.11.tar.gz dropbear-2020.81.tar.bz2 解压 $tar -zxvf zlib-1.2.11.tar.gz $tar -jxvf dropbear-2020.81.tar.bz2 zlib交叉编译配置 CC/usr/local/arm/network/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-gcc ./configure --prefix$PWD/install dro…

目录扫描+JS文件中提取URL和子域+403状态绕过+指纹识别(dirsearch_bypass403)

dirsearch_bypass403 在安全测试时&#xff0c;安全测试人员信息收集中时可使用它进行目录枚举&#xff0c;目录进行指纹识别&#xff0c;枚举出来的403状态目录可尝试进行绕过&#xff0c;绕过403有可能获取管理员权限。不影响dirsearch原本功能使用 运行流程 dirsearch进行…

LLM强势挺进端侧,AI大语言模型端侧部署如何影响超自动化?

▲ 图片由AI生成 算力资源吃紧&#xff0c;成本居高不下&#xff0c;数据隐私泄露&#xff0c;用户体验不佳…… 以OpenAI为代表的大语言模型爆发后&#xff0c;多重因素影响之下本地化部署成为LLM落地的主流模式。LLM迫切需要部署在本地设备上&#xff0c;围绕LLM端侧部署的…

财报解读:首次全口径盈利,快手深耕电商找准了发展门道?

快手成功闯过了盈利大关。 近日快手发布的Q2财报显示&#xff0c;其借助于电商“内循环”取得超预期成效&#xff0c;不仅用户数相比一季度环比净增1900万&#xff0c;再创新高&#xff0c;而且迎来了成立以来首次单季度全口径盈利。 对于快手盈利能力的大幅提升&#xff0c;…

ASCII码 对照表

总256个字符元素 0&#xff5e;255 码值整数据 字符结构 字符元素(内容) 整数结构 码值整数

【前端】Layui动态数据表格拖动排序

目录 一、下载layui-soul-table 二、使用 三、Layui实际使用 1、html代码 2、JS代码 3、PHP后台代码 目的&#xff1a;使用Layui的数据表格&#xff0c;拖动行进行排序。 使用插件&#xff1a;layui-soul-table 和 Layui 1.layui-soul-table文档&#xff1a;https://…

ZKP硬件加速

1. 引言 本文重点关注&#xff1a; 1&#xff09;何为硬件加速&#xff1f;为何需要硬件加速&#xff1f;2&#xff09;ZKP的关键计算原语&#xff1a; Multiscalar MultiplicationNumber Theoretic TransformationArithmetic Hashes 3&#xff09;所需的硬件资源4&#xff0…

vue3学习源码笔记(小白入门系列)------ 组件更新流程

目录 说明例子processComponentcomponentUpdateFnupdateComponentupdateComponentPreRender 总结 说明 由于响应式相关内容太多&#xff0c;决定先接着上文组件挂载后&#xff0c;继续分析组件后续更新流程&#xff0c;先不分析组件是如何分析的。 例子 将这个 用例 使用 vi…

MQTT,如何在SpringBoot中使用MQTT实现消息的订阅和发布

一、MQTT介绍 1.1 什么是MQTT&#xff1f; MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议&#xff09;&#xff0c;是一种基于发布/订阅&#xff08;publish/subscribe&#xff09;模式的“轻量级”通讯协议&#xff0c;该协议构建于…

WhatsApp 时事通讯,又一个强大的营销功能

有兴趣通过时事通讯有效地接触您的受众吗&#xff1f;如果您的客户正在使用WhatsApp&#xff0c;使用WhatsApp商业通讯是理想的解决方案。在这篇文章中&#xff0c;我们将探讨使用 WhatsApp时事通讯进行客户沟通的优势。 什么是WhatsApp时事通讯&#xff1f; WhatsApp时事通讯…

vuex使用Cannot find module ‘./api/index.js‘

使用vuex中出现这个问题。我的vuex的配置。 import Vue from vue import Vuex from vuex import App from ./App.vue import store from "./store"; import router from ./router; import "/assets/css/base.css"; import VueRouter from vue-router; impo…

【LeetCode75】第四十二题 删除二叉搜索数中的节点

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 题目给我们一棵二叉搜索树&#xff0c;给我们一个目标值&#xff0c;让我们删除节点值等于目标值的节点&#xff0c;并且删除之后需要保持…

【原创】H3C路由器OSPF测试

网络拓扑图 路由器配置&#xff1a; 路由器1上接了4跟线&#xff0c;分别为这四个接口配置IP地址。 # interface GigabitEthernet0/0/0port link-mode routecombo enable copperip address 2.1.1.2 255.255.255.0 # interface GigabitEthernet0/0/1port link-mode routecombo…

独立站怎么做活动策划,独立站推广方式有哪些

独立站可以获得更多的用户关注和认可&#xff0c;进而实现业务增长和发展&#xff0c;因此活动策划至关重要&#xff0c;那么独立站怎么做活动策划&#xff0c;独立站推广方式有哪些&#xff1f; 独立站怎么做活动策划&#xff1f; 1、明确目标&#xff1a;在开始策划之前&am…

结构化日志记录增强网络安全性

日志是一种宝贵的资产&#xff0c;在监视和分析应用程序或组织的 IT 基础结构的整体安全状况和性能方面发挥着至关重要的作用。它们提供系统事件、用户活动、网络流量和应用程序行为的详细记录&#xff0c;从而深入了解潜在威胁或未经授权的访问尝试。虽然组织历来依赖于传统的…

ROS获取目标点导航完成状态(rospy)

文章目录 ROS获取目标点导航完成状态1. Action方式2. Topic方式3. 验证4. 状态码取值 ROS获取目标点导航完成状态 1. Action方式 在ROS中&#xff0c;导航框架默认使用move_base&#xff0c;所以对于导航状态的获取往往需要往move_base的交互状态组建上考虑。 一种常见的方法…

IP代理|一文看懂IPv4与IPv6

IP作为互联网的重要的桥梁&#xff0c;是计算机网络相互连接进行通信而设计的协议&#xff0c;正是因为有了P协议&#xff0c;因特网才得以迅速发展成为庞大的、开放的计算机通信网络。IP代理中常常可以看到IPv4与IPv6&#xff0c;今天就给各位跨境老板详细解释&#xff0c;他们…

手写Mybatis:第6章-数据源池化技术实现

文章目录 一、目标&#xff1a;数据源池化技术实现二、设计&#xff1a;数据源池化技术实现三、实现:数据源池化技术实现3.1 工程结构3.2 数据源池化技术关系图3.3 无池化链接实现3.4 有池化链接实现3.4.1 有连接的数据源3.4.2 池化链接的代理3.4.3 池状态定义3.4.4 pushConnec…