
描述性统计
用途:数据分布探索、异常值检测
1 2
| summary(data) # 五数概括 psych::describe(data) # 详细统计量(偏度/峰度)
|
假设检验
T检验(两组均值差异):
1
| t.test(group1, group2, var.equal=TRUE) # 独立样本
|
卡方检验(分类变量关联性):
1
| chisq.test(table(var1, var2))
|
回归模型
[!NOTE] 注意
- 模型前提检验:回归需验证正态性、异方差性;PCA/FA需KMO>0.6
- 可视化优先:用 ggplot2/plotly 探索数据再建模
- 可重复性:结合 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语言用户能更高效地挖掘数据深层结构,为后续建模(如回归、聚类)提供清晰、稳健的变量基础。
数据降维 Dimension Reduction
当数据集包含大量高度相关的变量时,因子分析可将这些变量浓缩为少数几个关键因子(如将20个问卷题目浓缩为3个心理特质因子),减少分析复杂度。
探索变量间的潜在结构 Latent Structure
(1)识别观测变量背后隐藏的共同维度(如“满意度”可能由“产品质量”“服务态度”等潜因子构成)。
(2)输出解读:因子载荷(Factor Loadings)表示变量与因子的相关性(绝对值>0.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 # 公因子方差(变量解释比例)
|
数据要求:
变量需为连续或有序分类变量,样本量建议 ≥ 变量数×10。
变量间需存在相关性(可通过相关矩阵或Bartlett检验确认)。
模型选择:
探索性因子分析(EFA):未知潜在结构时使用(常用psych::fa)。
验证性因子分析(CFA):验证预设因子结构(用lavaan包)。
旋转方法:
正交旋转(varimax):假设因子独立(如心理学特质)。
斜交旋转(promax):允许因子相关(如社会经济指标)。
[!NOTE] FA与PCA的区别
若目标是理解变量背后的理论构念,用因子分析 FA;若只需减少变量数量且保留最大信息,用PCA。
聚类分析
K均值聚类
层次聚类
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个主题
|