R语言学习--Day04--数据分析技巧

在清洗完数据,在对数据分析前,我们要懂得先梳理一下我们的逻辑,即数据是什么形式的,要进行哪种分析,有可能呈现什么特点,进而再想怎么处理数据去画图可以最大程度地凸显我们要的特点。

一般来讲,数据会有以下几种特点:单分布、双变量关系、多变量之间的比较、时间趋势、构成比例、影响程度,分别对应问题:数据如何分布、X与Y的联系、变量间的差异、如何随时间变化、各部分占比、哪种因素对结果的影响更大。大部分的数据,基本都是由这几种情况排列组合的复杂问题,我们要学会拆解问题去一步步解决,这样也能使我们的思路更加明确。

特别的,有时候我们在拿到数据时,就跟非监督学习一样,我们只知道要分析数据特点,但对结果的分布缺乏概念,这时我们就可以采取先把数据分布画出来的操作,注意数据的数量,如果样本少,我们直接画箱线图或者散点图就行,但如果数据非常多,那此时用六边形图,就比较合适了。

假如我们有一些数据

R 复制代码
set.seed(42)

# 生成4种类别的数据(每组1000个观测值)
n <- 1000
df <- data.frame(
  # 类别变量(4组)
  group = rep(c("A组-正态分布", "B组-右偏分布", "C组-双峰分布", "D组-离群点"), each = n),
  
  # X变量(根据组别生成不同分布)
  x = c(
    rnorm(n),                       # A组:正态分布
    rgamma(n, shape = 2),           # B组:右偏分布
    c(rnorm(n/2, -2), rnorm(n/2, 2)), # C组:双峰分布
    c(rnorm(n*0.95), rnorm(n*0.05, 5)) # D组:离群点
  ),
  
  # Y变量(与X相关,加入噪声)
  y = c(
    0.8 * rnorm(n) + rnorm(n, sd = 0.3),         # A组
    0.5 * rgamma(n, shape = 2) + rnorm(n, sd = 0.2), # B组
    c(rnorm(n/2, -1), rnorm(n/2, 1)) + 0.5*rnorm(n),  # C组
    c(rnorm(n*0.95), rnorm(n*0.05, 8))           # D组
  )
)

然后分别生成六边形图和箱线图

R 复制代码
hex_facet <- ggplot(df, aes(x = x, y = y)) +
  geom_hex(bins = 30, alpha = 0.8) +
  scale_fill_gradient(low = "lightblue", high = "darkblue", name = "频次") +
  facet_wrap(~group, scales = "free") +  # 按组别分面,自由缩放坐标轴
  labs(title = "多类别六边形图(分面展示)", x = "X变量", y = "Y变量") +
  theme_minimal()

print(hex_facet)
R 复制代码
box_facet <- ggplot(df, aes(y = y)) +
  geom_boxplot(fill = "skyblue", width = 0.5) +
  facet_grid(. ~ group, scales = "free_x") +  # 横向分面
  labs(title = "多类别箱线图(横向分面)", x = "", y = "Y变量") +
  theme_minimal()

print(box_facet)
相关推荐
遇见尚硅谷2 小时前
C语言:*p++与p++有何区别
c语言·开发语言·笔记·学习·算法
艾莉丝努力练剑3 小时前
【数据结构与算法】数据结构初阶:详解排序(二)——交换排序中的快速排序
c语言·开发语言·数据结构·学习·算法·链表·排序算法
jz_ddk3 小时前
[HarmonyOS] 鸿蒙LiteOS-A内核深度解析 —— 面向 IoT 与智能终端的“小而强大”内核
物联网·学习·华为·harmonyos
试着3 小时前
零基础学习性能测试第五章:Tomcat的性能分析与调优-Tomcat原理,核心配置项,性能瓶颈分析,调优
学习·零基础·tomcat·性能测试
老虎06274 小时前
JavaWeb(苍穹外卖)--学习笔记13(微信小程序开发,缓存菜品,Spring Cache)
笔记·学习·微信小程序
@蓝莓果粒茶5 小时前
LeetCode第350题_两个数组的交集II
c++·python·学习·算法·leetcode·职场和发展·c#
无名工程师6 小时前
AI 学习过程中各阶段的学习重点、时间规划以及不同方向的选择与建议等内容
人工智能·学习
试着6 小时前
零基础学习性能测试第五章:JVM性能分析与调优-垃圾回收器的分类与回收
jvm·学习·零基础·性能测试·垃圾回收器
livemetee6 小时前
Flink2.0学习笔记:Stream API 常用转换算子
大数据·学习·flink
WXX_s6 小时前
【OpenCV篇】OpenCV——03day.图像预处理(2)
人工智能·python·opencv·学习·计算机视觉