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)