299 lines
11 KiB
Plaintext
299 lines
11 KiB
Plaintext
## 问题1:[研究主题]
|
||
### 研究问题
|
||
研究问题是:[简明描述研究问题,形式为"A是否与B有关系?"]
|
||
|
||
### 假设
|
||
- 零假设(H0):[变量A]与[变量B]无关。
|
||
- 备择假设(H1):[变量A]与[变量B]有关。
|
||
|
||
### 数据
|
||
```{r}
|
||
# 读取数据
|
||
data1 <- read.csv("[数据文件路径]", stringsAsFactors = TRUE)
|
||
|
||
# 查看数据结构
|
||
str(data1)
|
||
head(data1)
|
||
|
||
# 创建列联表
|
||
contingency_table <- table(data1$[变量A], data1$[变量B])
|
||
contingency_table
|
||
|
||
# 计算条件概率
|
||
prop.table(contingency_table, margin = 1)
|
||
```
|
||
|
||
### 可视化
|
||
```{r}
|
||
# 创建马赛克图
|
||
mosaicplot(contingency_table,
|
||
main = "[图表标题]",
|
||
xlab = "[x轴标签]",
|
||
ylab = "[y轴标签]",
|
||
col = c("lightblue", "salmon"))
|
||
```
|
||
|
||
### 检验假设的统计检验
|
||
```{r}
|
||
# 卡方检验
|
||
chisq_test <- chisq.test(contingency_table)
|
||
chisq_test
|
||
|
||
# Fisher精确检验
|
||
fisher_test <- fisher.test(contingency_table)
|
||
fisher_test
|
||
```
|
||
|
||
### 统计解释
|
||
```{r}
|
||
chisq_test$expected
|
||
```
|
||
两种统计检验并不同样适合这些数据。卡方检验通常要求每个单元格的期望频数大于5,而从上面的输出可以看到,有些单元格的期望频数小于5。因此,Fisher精确检验更适合这种小样本量的情况,它不依赖于大样本近似。
|
||
|
||
### 结论和讨论
|
||
研究问题是探究[重述研究问题]。我的分析流程如下:
|
||
|
||
首先,我将数据整理成列联表,以便观察[变量A]与[变量B]之间的关系。通过计算条件概率,我可以直观地看到这两个变量之间可能存在的关联。
|
||
|
||
在选择统计检验方法时,我考虑了数据的特性:
|
||
|
||
1. 数据是[描述数据类型,如"分类数据(类别变量)"]
|
||
2. 我们关心的是[描述研究目的,如"两个分类变量之间是否存在关联"]
|
||
3. 样本量[描述样本量特点,如"相对较小"]
|
||
基于这些特点,我选择了[所选统计方法]。[详细解释所选方法的假设和适用条件]
|
||
|
||
[所选统计方法]的p值为 r fisher_test$p.value ,[解释结果,如"小于0.05的显著性水平,因此我们拒绝零假设"]。
|
||
|
||
从数据分析和可视化结果来看,[描述观察到的模式,如"当A发生时,B更可能/不太可能发生"]。这一发现[与初始假设一致/相反],表明[解释结果的意义]。
|
||
|
||
这一结果对于理解[研究领域]具有重要意义。[讨论研究结果的更广泛意义和潜在应用]。
|
||
|
||
## 问题2:[研究主题]
|
||
### 研究问题
|
||
研究问题是:[简明描述研究问题,形式为"A是否比B更[某种特性]?"]
|
||
|
||
### 假设
|
||
- 零假设(H0):[条件A]和[条件B]的[测量变量]没有显著差异。
|
||
- 备择假设(H1):[条件A]的[测量变量]显著[高于/低于][条件B]。
|
||
|
||
### 数据
|
||
```{r}
|
||
data_file <- "[数据文件名].csv"
|
||
|
||
# 读取数据(两列数据:第一列为分组变量,第二列为测量值)
|
||
data <- read.csv(paste0("c:/Users/31598/Desktop/BSI_exam/", data_file), stringsAsFactors = TRUE)
|
||
names(data) <- c("group", "value") # 统一列名,便于后续分析
|
||
|
||
# 确保分组变量是因子类型
|
||
data$group <- factor(data$group)
|
||
|
||
# 查看数据结构
|
||
str(data)
|
||
head(data)
|
||
|
||
# 计算每组的描述性统计量
|
||
group_summary <- tapply(data$value, data$group, summary)
|
||
group_sd <- tapply(data$value, data$group, sd)
|
||
print(group_summary)
|
||
print(group_sd)
|
||
|
||
# 计算样本量
|
||
sample_sizes <- table(data$group)
|
||
print(sample_sizes)
|
||
|
||
# 计算组均值(用于后续分析)
|
||
group_means <- tapply(data$value, data$group, mean)
|
||
print(group_means)
|
||
|
||
# 获取组别名称(用于后续分析)
|
||
group_levels <- levels(data$group)
|
||
```
|
||
|
||
### 可视化
|
||
```{r}
|
||
# 设置图表标题和轴标签(只需修改这两处)
|
||
plot_title <- "[两组比较的标题]"
|
||
y_label <- "[测量变量]"
|
||
|
||
# 箱线图与散点图组合
|
||
boxplot(value ~ group, data = data,
|
||
main = plot_title,
|
||
xlab = "组别",
|
||
ylab = y_label,
|
||
col = c("lightblue", "salmon"),
|
||
border = "black")
|
||
|
||
# 添加点以显示原始数据
|
||
stripchart(value ~ group, data = data,
|
||
method = "jitter",
|
||
vertical = TRUE,
|
||
add = TRUE,
|
||
pch = 19,
|
||
col = "darkblue")
|
||
|
||
# 直方图
|
||
par(mfrow = c(1, 2))
|
||
hist(data$value[data$group == group_levels[1]],
|
||
main = paste(group_levels[1], "组直方图"),
|
||
xlab = y_label,
|
||
col = "lightblue")
|
||
hist(data$value[data$group == group_levels[2]],
|
||
main = paste(group_levels[2], "组直方图"),
|
||
xlab = y_label,
|
||
col = "salmon")
|
||
par(mfrow = c(1, 1))
|
||
|
||
# 小提琴图(可选)
|
||
if(!require(vioplot)) install.packages("vioplot")
|
||
library(vioplot)
|
||
with(data,
|
||
vioplot(value[group==group_levels[1]],
|
||
value[group==group_levels[2]],
|
||
names = group_levels,
|
||
col = c("lightblue", "salmon"),
|
||
main = plot_title,
|
||
xlab = "组别",
|
||
ylab = y_label))
|
||
|
||
# 点图加均值和95%置信区间
|
||
if(!require(ggplot2)) install.packages("ggplot2")
|
||
library(ggplot2)
|
||
ggplot(data, aes(x = group, y = value, color = group)) +
|
||
geom_point(position = position_jitter(width = 0.2), size = 3, alpha = 0.7) +
|
||
stat_summary(fun = mean, geom = "point", shape = 18, size = 5, color = "black") +
|
||
stat_summary(fun.data = mean_cl_normal, geom = "errorbar", width = 0.2) +
|
||
labs(title = plot_title,
|
||
x = "组别",
|
||
y = y_label) +
|
||
theme_classic() +
|
||
scale_color_manual(values = c("blue", "red"))
|
||
```
|
||
|
||
### 检验假设的统计检验
|
||
|
||
```{r}
|
||
# 1. 检查正态性
|
||
# 按组分别检查
|
||
shapiro_test1 <- shapiro.test(data$value[data$group == group_levels[1]])
|
||
shapiro_test2 <- shapiro.test(data$value[data$group == group_levels[2]])
|
||
|
||
cat(group_levels[1], "组Shapiro-Wilk正态性检验 p值:", shapiro_test1$p.value, "\n")
|
||
cat(group_levels[2], "组Shapiro-Wilk正态性检验 p值:", shapiro_test2$p.value, "\n")
|
||
|
||
# 确定是否满足正态性假设
|
||
normality_assumption_met <- shapiro_test1$p.value > 0.05 & shapiro_test2$p.value > 0.05
|
||
cat("正态性假设是否满足:", normality_assumption_met, "\n")
|
||
|
||
# Q-Q图
|
||
par(mfrow = c(1, 2))
|
||
qqnorm(data$value[data$group == group_levels[1]],
|
||
main = paste(group_levels[1], "组Q-Q图"))
|
||
qqline(data$value[data$group == group_levels[1]])
|
||
qqnorm(data$value[data$group == group_levels[2]],
|
||
main = paste(group_levels[2], "组Q-Q图"))
|
||
qqline(data$value[data$group == group_levels[2]])
|
||
par(mfrow = c(1, 1))
|
||
|
||
# 2. 检查方差同质性
|
||
var_test <- var.test(value ~ group, data = data)
|
||
print(var_test)
|
||
|
||
# 确定是否满足方差同质性假设
|
||
variance_homogeneity_met <- var_test$p.value > 0.05
|
||
cat("方差同质性假设是否满足:", variance_homogeneity_met, "\n")
|
||
|
||
# 3. 确定检验方向
|
||
# 查看两组均值差异
|
||
cat(group_levels[1], "组均值与", group_levels[2], "组均值的差异:",
|
||
group_means[1] - group_means[2], "\n")
|
||
|
||
# 设置检验方向(根据研究假设修改)
|
||
# "two.sided" - 双侧检验(默认)
|
||
# "greater" - 单侧检验,假设第一组大于第二组
|
||
# "less" - 单侧检验,假设第一组小于第二组
|
||
test_alternative <- "two.sided" # 可根据研究假设修改
|
||
test_paired <- 'F'
|
||
```
|
||
|
||
### 检查统计检验的假设
|
||
|
||
```{r}
|
||
if(normality_assumption_met) {
|
||
cat("数据满足正态性假设,使用t检验\n")
|
||
|
||
# 根据方差同质性检查结果选择t检验类型
|
||
if(variance_homogeneity_met) {
|
||
cat("数据满足方差同质性假设,使用等方差t检验(var.equal = TRUE)\n")
|
||
t_test <- t.test(value ~ group, data = data,
|
||
alternative = test_alternative,
|
||
paired = test_paired,
|
||
var.equal = TRUE)
|
||
} else {
|
||
cat("数据不满足方差同质性假设,使用Welch's t检验(var.equal = FALSE)\n")
|
||
t_test <- t.test(value ~ group, data = data,
|
||
alternative = test_alternative,
|
||
var.equal = FALSE)
|
||
}
|
||
|
||
print(t_test)
|
||
|
||
# 计算效应量(Cohen's d)
|
||
if(!require(effsize)) install.packages("effsize")
|
||
library(effsize)
|
||
cohen_d <- cohen.d(value ~ group, data = data)
|
||
print(cohen_d)
|
||
|
||
# 保存检验结果
|
||
test_result <- t_test
|
||
effect_size <- cohen_d$estimate
|
||
effect_size_interpretation <- ifelse(abs(effect_size) < 0.2, "小",
|
||
ifelse(abs(effect_size) < 0.5, "小到中",
|
||
ifelse(abs(effect_size) < 0.8, "中",
|
||
ifelse(abs(effect_size) < 1.2, "大", "非常大"))))
|
||
test_name <- ifelse(variance_homogeneity_met, "等方差t检验", "Welch's t检验")
|
||
|
||
} else {
|
||
cat("数据不满足正态性假设,使用非参数检验(Wilcoxon秩和检验)\n")
|
||
wilcox_test <- wilcox.test(value ~ group, data = data,
|
||
alternative = test_alternative)
|
||
print(wilcox_test)
|
||
|
||
# 计算非参数效应量
|
||
if(!require(rstatix)) install.packages("rstatix")
|
||
library(rstatix)
|
||
wilcox_effsize <- wilcox_effsize(value ~ group, data = data)
|
||
print(wilcox_effsize)
|
||
|
||
# 保存检验结果
|
||
test_result <- wilcox_test
|
||
effect_size <- wilcox_effsize$effsize
|
||
effect_size_interpretation <- wilcox_effsize$magnitude
|
||
test_name <- "Wilcoxon秩和检验"
|
||
}
|
||
|
||
# 保存p值和显著性结论
|
||
p_value <- test_result$p.value
|
||
significance <- ifelse(p_value < 0.05, "显著", "不显著")
|
||
```
|
||
|
||
### 结果讨论与结论
|
||
研究问题是探究[重述研究问题]。我的分析流程如下:
|
||
|
||
首先,我通过[描述使用的可视化方法]展示了两组[研究对象]([组别A]和[组别B])的[测量变量]数据。这些图表清晰地显示[描述观察到的模式,如"组别A的测量值明显高于/低于组别B"]。
|
||
|
||
在选择统计检验方法时,我考虑了数据的特性:
|
||
1. 数据是两个独立组的连续测量值
|
||
2. 我们有[是否有]明确的方向性假设([描述方向性假设])
|
||
3. 样本量[描述样本量特点,如"相对较小"]
|
||
|
||
基于这些特点,我首先选择了独立样本t检验([单侧/双侧])。为了验证t检验的假设,我进行了以下检查:
|
||
|
||
1. 正态性检验:Shapiro-Wilk检验结果显示[组别A]组p值为`r shapiro_test1$p.value`,[组别B]组p值为`r shapiro_test2$p.value`,[解释结果,如"均大于0.05的显著性水平,表明数据不违反正态分布假设"]。Q-Q图和直方图也[支持/不支持]这一结论。
|
||
|
||
2. 方差同质性检验:F检验结果p值为`r var_test$p.value`,[解释结果,如"大于0.05,表明两组方差没有显著差异"]。
|
||
|
||
t检验的p值为`r t_test$p.value`,[解释结果,如"显著小于0.05的显著性水平,因此我们拒绝零假设"]。[如果进行了非参数检验,也解释其结果]
|
||
|
||
结论是:[组别A]的[测量变量][比较关系,如"显著高于/低于"][组别B]。这表明[解释结果对研究问题的回答]。[组别A]中[测量变量]的平均值为[计算平均值],而[组别B]为[计算平均值],差异约为[计算差异]。这种差异不仅在统计上显著,在[研究领域]上也具有重要意义,因为[解释差异的实际意义]。
|
||
|
||
这一发现对于理解[研究领域]具有重要意义。[讨论研究结果的更广泛意义]。研究的局限性包括[讨论研究局限性,如样本量等]。未来的研究方向可以包括[提出未来研究方向]。 |