描述性统计

用途:数据分布探索、异常值检测

1
2
summary(data)       # 五数概括
psych::describe(data) # 详细统计量(偏度/峰度)

假设检验

T检验(两组均值差异):

1
t.test(group1, group2, var.equal=TRUE) # 独立样本

卡方检验(分类变量关联性):

1
chisq.test(table(var1, var2)) 

回归模型

[!NOTE] 注意

  1. 模型前提检验:回归需验证正态性、异方差性;PCA/FA需KMO>0.6
  2. 可视化优先:用 ggplot2/plotly 探索数据再建模
  3. 可重复性:结合 R Markdown 或 Quarto 生成动态报告

线性回归(LM)

1
2
3
model <- lm(y ~ x1 + x2, data=df)
summary(model) # 系数显著性
car::vif(model) # 多重共线性检验

广义线性模型(GLM)

1
2
3
4
5
# Logistic回归(二分类因变量)
glm(y_binary ~ x1 + x2, family=binomial, data=df)

# 泊松回归(计数型因变量)
glm(y_count ~ x1, family=poisson, data=df)

非线性回归

用途:复杂关系建模(如生长曲线)

1
2
3
4
5
6
7
8
9
10
11
12
13
# 核心函数
nls(公式, data=数据框, start=初始参数列表)

# 公式需明确写出非线性关系
model_exp <- nls(y ~ a * exp(b * x),
data = data,
start = list(a = 1, b = 0.1)) # 初始值

# 对数模型:y ~ a + b*log(x)
# 幂函数模型:y ~ a*x^b
# 二次函数模型:y ~ a*x^2 + b*x + c

# 使用时需根据数据的实际分布选择合适的模型形式,并合理设置初始参数。

多变量分析

主成分分析(PCA)

用途:无监督降维、消除多重共线性

1
2
pca <- prcomp(df, scale=TRUE)
factoextra::fviz_pca_biplot(pca) # 双标图

因子分析(FA)

通过因子分析,R语言用户能更高效地挖掘数据深层结构,为后续建模(如回归、聚类)提供清晰、稳健的变量基础。

  1. 数据降维 Dimension Reduction
    当数据集包含大量高度相关的变量时,因子分析可将这些变量浓缩为少数几个关键因子(如将20个问卷题目浓缩为3个心理特质因子),减少分析复杂度。

  2. 探索变量间的潜在结构 Latent Structure
    (1)识别观测变量背后隐藏的共同维度(如“满意度”可能由“产品质量”“服务态度”等潜因子构成)。
    (2)输出解读:因子载荷(Factor Loadings)表示变量与因子的相关性(绝对值>0.3通常认为显著)。

  3. 效度验证 Validity Testing
    在量表开发中,检验问卷是否真实测量了预设的理论构念(如验证“焦虑量表”是否包含“躯体症状”“认知担忧”等维度)

应用场景:
(1)分析调查问卷(如大五人格测试),将数十个问题归类到5-6个核心人格因子。
(2)从购买频率、品牌偏好、价格敏感度等变量中提取“忠诚度”“价格意识”等潜在因子。

R语言实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 1. 数据准备:剔除缺失值,标准化数据
data_scaled <- scale(data)

# 2. 检验数据适用性
library(psych)
KMO(data_scaled) # KMO统计量 >0.7 较合适
cortest.bartlett(data) # 拒绝变量独立的原假设

# 3. 确定因子数量(常用方法)
fa.parallel(data_scaled, fa = "fa") # 平行分析建议因子数
scree(data_scaled) # 碎石图拐点判断

# 4. 提取因子并旋转(提高解释性)
fa_model <- fa(data_scaled, nfactors = 3, rotate = "promax")

# 5. 结果解读
print(fa_model$loadings, cutoff = 0.3) # 显著载荷
fa_model$communalities # 公因子方差(变量解释比例)
  1. 数据要求
    变量需为连续或有序分类变量,样本量建议 ≥ 变量数×10。
    变量间需存在相关性(可通过相关矩阵或Bartlett检验确认)。

  2. 模型选择
    探索性因子分析(EFA):未知潜在结构时使用(常用psych::fa)。
    验证性因子分析(CFA):验证预设因子结构(用lavaan包)。

  3. 旋转方法
    正交旋转(varimax):假设因子独立(如心理学特质)。
    斜交旋转(promax):允许因子相关(如社会经济指标)。

[!NOTE] FA与PCA的区别
若目标是理解变量背后的理论构念,用因子分析 FA;若只需减少变量数量且保留最大信息,用PCA。

聚类分析

K均值聚类

1
kmeans(df, centers=3)

层次聚类

1
hclust(dist(df), method="ward.D2")

判别分析

用途:分类预测(如物种鉴定)

1
2
# R包 MASS
lda(Species ~ ., data=iris)

时间序列分析

ARIMA模型

用途:预测带趋势/季节性的数据

1
2
arima_model <- auto.arima(ts_data)
forecast::forecast(arima_model, h=12) # 预测12期

GARCH模型

用途:金融波动率建模

1
2
garch_spec <- ugarchspec(variance.model=list(model="sGARCH"))
ugarchfit(garch_spec, returns_data)

机器学习方法

监督学习

随机森林(分类/回归)

1
randomForest::randomForest(y ~ ., data=df, ntree=500)

支持向量机(SVM)

1
e1071::svm(y ~ ., data=df, kernel="radial")

无监督学习

关联规则(如购物篮分析)

1
arules::apriori(transactions, list(supp=0.01, conf=0.8))

结构方程模型(SEM)

验证性因子分析(CFA)

1
2
3
# R包 lavaan
model <- 'latent =~ x1 + x2 + x3'
cfa(model, data=df)

路径分析

1
2
sem_model <- 'y1 ~ x1 + x2; y2 ~ y1 + x3'
sem(sem_model, data=df)

文本分析

情感分析

1
2
3
4
# R包 tidytext
get_sentiments("bing") %>%
inner_join(text_tokens) %>%
count(sentiment)

主题模型(LDA)

1
topicmodels::LDA(dtm, k=5) # 提取5个主题