R 语言统计分析基础

FreeGuideOnline 最新 2026-07-10

r x <- 10 name <- "Alice"


### 基本数据类型
- **数值型 (numeric)**:`3.14`, `100`
- **整数型 (integer)**:`2L`
- **字符型 (character)**:`"hello"`
- **逻辑型 (logical)**:`TRUE`, `FALSE`

使用 `class()` 查看变量类型。

### 数据结构入门
- **向量 (vector)**:`c(1,2,3)` 创建,所有元素须同类型。
- **矩阵 (matrix)**:`matrix(1:9, nrow=3)` 创建二维同质数据。
- **数据框 (data.frame)**:最常用的异质二维结构,类似表格。
  ```r
  df <- data.frame(
    id = 1:3,
    score = c(85, 92, 78),
    grade = c("B", "A", "C")
  )
  • 列表 (list):可容纳任意类型元素的容器。

数据导入与导出

读取 CSV 文件

data <- read.csv("data.csv", header=TRUE, stringsAsFactors=FALSE)

常见参数:sep="," (分隔符),na.strings="NA" (缺失值标识)。

读取 Excel 文件

需安装 readxl 包:

install.packages("readxl")
library(readxl)
data <- read_excel("data.xlsx", sheet = 1)

数据导出

write.csv(data, "output.csv", row.names = FALSE)

数据探索与描述性统计

查看数据概况

  • head(data) 显示前6行
  • str(data) 查看每列结构和类型
  • summary(data) 生成各列的五数概括及频数统计

计算基本统计量

mean(data$score)   # 均值
median(data$score) # 中位数
sd(data$score)     # 标准差
var(data$score)    # 方差
quantile(data$score, probs = c(0.25, 0.75)) # 分位数
cor(data$score, data$hours)   # 相关系数

频数统计与交叉表

table(data$grade)                     # 单变量频数
table(data$grade, data$gender)        # 二维列联表
prop.table(table(data$grade))         # 比例分布

数据可视化基础

使用基础画图函数

直方图

hist(data$score, main="成绩分布", xlab="分数", col="lightblue")

箱线图

boxplot(score ~ grade, data=data, main="各等级成绩分布")

散点图

plot(data$hours, data$score, main="学习时间 vs 成绩",
     xlab="小时", ylab="分数", pch=19)

条形图

barplot(table(data$grade), main="等级频数", col="steelblue")

ggplot2 入门

安装并加载 ggplot2

install.packages("ggplot2")
library(ggplot2)

快速绘制散点图:

ggplot(data, aes(x=hours, y=score)) +
  geom_point(color="blue") +
  labs(title="学习时间与成绩", x="小时", y="分数")

分组箱线图:

ggplot(data, aes(x=grade, y=score, fill=grade)) +
  geom_boxplot() + theme_minimal()

假设检验基础

t 检验

单样本 t 检验(比较样本均值与已知值)

t.test(data$score, mu=80)  # 检验均值是否为80

独立两样本 t 检验(两组均值比较)

t.test(score ~ gender, data=data)  # 假设gender只有两水平

配对 t 检验

t.test(data$before, data$after, paired=TRUE)

卡方检验

用于分类变量关联性检验:

chisq.test(table(data$grade, data$gender))

方差分析 (ANOVA)

比较三组及以上均值差异:

aov_result <- aov(score ~ grade, data=data)
summary(aov_result)

检验结果解读要点

  • 关注 p-value:通常 p < 0.05 认为差异有统计学意义。
  • 结合效应量(如 Cohen’s d)和置信区间判断实际意义。

线性回归入门

简单线性回归

model <- lm(score ~ hours, data=data)
summary(model)

输出中:

  • Coefficients:截距和斜率,显著性用星号标示。
  • Multiple R-squared:模型解释的变异比例。
  • p-value:模型整体显著性。

回归诊断简图

par(mfrow=c(2,2))
plot(model)

查看残差图、QQ图等,检验线性、正态性和同方差性假设。

利用模型预测

new_hours <- data.frame(hours=c(10, 15, 20))
predict(model, newdata=new_hours)