上传文件至 /

This commit is contained in:
yyh 2025-03-20 22:22:26 +08:00
commit f73e7ffb46
3 changed files with 646 additions and 0 deletions

295
exam02_example.Rmd Normal file
View File

@ -0,0 +1,295 @@
## 问题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" # 可根据研究假设修改
### 检查统计检验的假设
```{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,
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]为[计算平均值],差异约为[计算差异]。这种差异不仅在统计上显著,在[研究领域]上也具有重要意义,因为[解释差异的实际意义]。
这一发现对于理解[研究领域]具有重要意义。[讨论研究结果的更广泛意义]。研究的局限性包括[讨论研究局限性,如样本量等]。未来的研究方向可以包括[提出未来研究方向]。

170
exam02_p1.Rmd Normal file
View File

@ -0,0 +1,170 @@
## 问题1蜘蛛的命运
### 研究问题
研究问题是:雌性红背蜘蛛是否更有可能接受被她吃掉的雄性的精子,而不是逃跑的雄性的精子?
### 假设
- 零假设(H0):雌性红背蜘蛛接受第二任伴侣的概率与第一任伴侣的命运(被吃或逃脱)无关。
- 备择假设(H1):雌性红背蜘蛛接受第二任伴侣的概率与第一任伴侣的命运(被吃或逃脱)有关。
数据分析:
```{r}
spider_data <- read.csv("../redback_spider.csv", stringsAsFactors = TRUE)
str(spider_data)
head(spider_data)
spider_table <- table(spider_data$fate_first_mate, spider_data$second_mate)
spider_table
prop.table(spider_table, margin = 1)
```
###Visualization
```{r}
# 创建马赛克图
mosaicplot(spider_table,
main = "雌性红背蜘蛛对第二任伴侣的接受情况",
xlab = "第一任伴侣的命运",
ylab = "第二任伴侣的命运",
col = c("lightblue", "salmon"))
```
###Statistical Analysis
```{r}
# 卡方检验
chisq_test <- chisq.test(spider_table)
chisq_test
# Fisher精确检验
fisher_test <- fisher.test(spider_table)
fisher_test
```
###Statistical Explanation
```{r}
# 检查卡方检验的期望频数
chisq_test$expected
```
两种统计检验并不同样适合这些数据。卡方检验通常要求每个单元格的期望频数大于5而从上面的输出可以看到有些单元格的期望频数小于5。因此Fisher精确检验更适合这种小样本量的情况它不依赖于大样本近似。
### Conclusion and Discussion
研究问题是探究雌性红背蜘蛛是否更有可能接受被她吃掉的雄性的精子,而不是逃脱的雄性的精子。我的分析流程如下:
首先我将数据整理成列联表以便观察第一任伴侣命运被吃或逃脱与雌性对第二任伴侣反应接受或拒绝之间的关系。通过计算条件概率prop.table函数我可以直观地看到这两个变量之间可能存在的关联。
在选择统计检验方法时,我考虑了数据的特性:
1. 数据是分类数据(类别变量)- 两个二分类变量形成2×2列联表
2. 我们关心的是两个分类变量之间是否存在关联
3. 样本量相对较小n=32
基于这些特点我选择了两种适用于分类数据的检验方法卡方检验和Fisher精确检验。
卡方检验的关键假设包括:
1. 观测值之间的独立性(每个观测是独立的)
2. 每个单元格的期望频数应大于5或至少80%的单元格期望频数大于5且所有单元格期望频数大于1
3. 数据是随机抽样得到的
Fisher精确检验的假设相对较少
1. 观测值之间的独立性
2. 数据是随机抽样得到的
3. 边际总和是固定的(非随机的)
通过检查`chisq_test$expected`我发现部分单元格的期望频数小于5这违反了卡方检验的假设。因此Fisher精确检验是更合适的选择因为它不依赖于大样本近似特别适用于小样本量的2×2列联表。Fisher精确检验直接计算在边际总和固定的情况下观察到当前或更极端结果的概率。
Fisher精确检验的p值为`r fisher_test$p.value`卡方检验的p值为`r chisq_test$p.value`。两者都小于0.05的显著性水平,因此我们拒绝零假设,认为第一任伴侣的命运与雌性对第二任伴侣的接受程度有关。
从数据分析和可视化结果来看,当第一任伴侣被吃掉时,雌性更倾向于拒绝第二任伴侣;而当第一任伴侣逃脱时,雌性更倾向于接受第二任伴侣。这一发现与最初的假设相反,表明雄性被食肉可能并不会增加其精子被接受的机会,反而可能降低后续雄性的交配成功率。这可能暗示了一种复杂的交配策略或生理机制,值得进一步研究。
这一结果对于理解红背蜘蛛的交配行为和性选择具有重要意义,它挑战了我们对雄性被食肉可能带来间接优势的初始假设。
## 问题2潜水时进食
### 研究问题
研究问题是:对于钟乳石海豚来说,捕食潜水是否比非捕食潜水消耗更多的氧气(能量)?
### 假设
- 零假设(H0):钟乳石海豚在捕食潜水和非捕食潜水时的氧气消耗量没有显著差异。
- 备择假设(H1):钟乳石海豚在捕食潜水时的氧气消耗量显著高于非捕食潜水。
数据分析:
```{r}
# 读取数据
dolphins <- read.csv("../dolphin_oxygen.csv", stringsAsFactors = TRUE)
# 查看数据结构
str(dolphins)
head(dolphins)
# 计算平均氧气消耗量
mean_nonfeeding <- mean(dolphins$oxygenUseNonfeeding)
mean_feeding <- mean(dolphins$oxygenUseFeeding)
cat("非捕食潜水的平均氧气消耗量:", mean_nonfeeding, "ml O2/kg\n")
cat("捕食潜水的平均氧气消耗量:", mean_feeding, "ml O2/kg\n")
```
###Visualization
```{r}
library(reshape2)
dolphins_long <- melt(dolphins, id.vars = "individual",
variable.name = "dive_type",
value.name = "oxygen_use")
boxplot(oxygen_use ~ dive_type, data = dolphins_long,
main = "钟乳石海豚在不同潜水类型下的氧气消耗量",
xlab = "潜水类型",
ylab = "氧气消耗量 (ml O2/kg)",
col = c("lightblue", "salmon"),
names = c("非捕食潜水", "捕食潜水"))
plot(dolphins$oxygenUseNonfeeding, dolphins$oxygenUseFeeding,
main = "钟乳石海豚的氧气消耗量比较",
xlab = "非捕食潜水氧气消耗量 (ml O2/kg)",
ylab = "捕食潜水氧气消耗量 (ml O2/kg)",
pch = 19, col = "blue")
abline(0, 1, lty = 2) # 添加对角线,表示相等的情况
```
###检查配对t检验的假设
```{r}
diff <- dolphins$oxygenUseFeeding - dolphins$oxygenUseNonfeeding
shapiro.test(diff)
qqnorm(diff)
qqline(diff)
hist(diff, breaks = 5, main = "差异的直方图", xlab = "氧气消耗量差异")
```
###统计检验:
```{r}
t_test <- t.test(dolphins$oxygenUseFeeding, dolphins$oxygenUseNonfeeding,
paired = TRUE, alternative = "greater")
t_test
```
###结论和讨论:
### 结果讨论与结论
研究问题是探究钟乳石海豚在捕食潜水时是否比非捕食潜水消耗更多的氧气(能量)。我的分析流程如下:
首先,我计算了两种潜水类型的平均氧气消耗量,为数据提供了初步的描述性统计。然后,我通过箱线图和配对点图进行可视化,这些图表清晰地展示了两种潜水类型之间的差异模式。
在选择统计检验方法时,我考虑了数据的特性:
1. 数据是配对的 - 每只海豚都进行了两种类型的潜水
2. 我们关心的是两种潜水类型之间的差异
3. 我们有明确的方向性假设(捕食潜水消耗更多氧气)
基于这些特点配对t检验是最合适的选择。配对t检验的关键假设是
1. 观测值之间的独立性(每对观测来自不同的个体)
2. 差异值(捕食潜水与非捕食潜水的氧气消耗差)应近似服从正态分布
为了验证第二个假设我进行了Shapiro-Wilk正态性检验并绘制了Q-Q图和直方图。Shapiro-Wilk检验的p值为`r shapiro.test(diff)$p.value`大于0.05的显著性水平表明我们没有足够证据拒绝差异值服从正态分布的假设。Q-Q图显示数据点大致沿着理论正态分布线分布直方图也显示了近似的钟形分布。这些结果支持使用配对t检验的合理性。
配对t检验的p值为`r t_test$p.value`显著小于0.05,因此我们拒绝零假设,认为捕食潜水确实比非捕食潜水消耗更多的氧气。
具体来看,捕食潜水的平均氧气消耗量为`r mean_feeding` ml O2/kg而非捕食潜水为`r mean_nonfeeding` ml O2/kg平均差异约为`r mean_feeding - mean_nonfeeding` ml O2/kg。这表明捕食行为本身确实会增加额外的能量消耗超出了常规潜水的努力。
这一发现对于理解海洋哺乳动物的能量预算和捕食策略具有重要意义。它表明钟乳石海豚在捕食时需要权衡额外的能量投入与获取食物的收益。这种能量权衡可能影响它们的捕食决策、潜水模式和整体生态适应性。未来的研究可以进一步探索不同捕食策略的能量效率,以及环境变化如何影响这些海洋哺乳动物的能量平衡。

181
exam02_p2.Rmd Normal file
View File

@ -0,0 +1,181 @@
## 问题:肠道微生物群落与多发性硬化症
### 研究问题
研究问题是:非致病性肠道微生物是否会触发实验性自身免疫性脑脊髓炎(EAE)的发作?
研究问题是:[简明描述研究问题,形式为"A是否与B有关系"或"A是否比B更[某种特性]"]
### 假设
- 零假设(H0):无菌(GF)小鼠和特定病原体清除(SPF)小鼠的自身反应性T细胞百分比没有显著差异。
- 备择假设(H1):特定病原体清除(SPF)小鼠的自身反应性T细胞百分比显著高于无菌(GF)小鼠。
- 零假设(H0)[组别A]和[组别B]的[测量变量]没有显著差异。
- 备择假设(H1)[组别A]的[测量变量]显著[高于/低于/不同于][组别B]。
### 数据分析
```{r}
# 读取数据
eae_data <- read.csv("c:/Users/31598/Desktop/BSI_exam/eae.csv", stringsAsFactors = TRUE)
# 查看数据结构
str(eae_data)
head(eae_data)
# 计算每组的描述性统计量
tapply(eae_data$autoreactive, eae_data$group, summary)
tapply(eae_data$autoreactive, eae_data$group, sd)
# 箱线图
boxplot(autoreactive ~ group, data = eae_data,
main = "不同微生物环境下小鼠的自身反应性T细胞百分比",
xlab = "小鼠组别",
ylab = "自身反应性T细胞百分比 (%)",
col = c("lightblue", "salmon"),
border = "black")
# 添加点以显示原始数据
stripchart(autoreactive ~ group, data = eae_data,
method = "jitter",
vertical = TRUE,
add = TRUE,
pch = 19,
col = "darkblue")
# 小提琴图 (提供更多分布信息)
if(!require(vioplot)) install.packages("vioplot")
library(vioplot)
with(eae_data,
vioplot(autoreactive[group=="GF"],
autoreactive[group=="SPF"],
names = c("GF", "SPF"),
col = c("lightblue", "salmon"),
main = "不同微生物环境下小鼠的自身反应性T细胞百分比",
xlab = "小鼠组别",
ylab = "自身反应性T细胞百分比 (%)"))
# 点图加均值和95%置信区间
library(ggplot2)
ggplot(eae_data, aes(x = group, y = autoreactive, 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 = "不同微生物环境下小鼠的自身反应性T细胞百分比",
x = "小鼠组别",
y = "自身反应性T细胞百分比 (%)") +
theme_classic() +
scale_color_manual(values = c("blue", "red"))
```
### 数据分析模板
```{r}
# 读取数据
data <- read.csv("[数据文件路径]", stringsAsFactors = TRUE)
# 查看数据结构
str(data)
head(data)
# 计算每组的描述性统计量
tapply(data$[测量变量], data$[分组变量], summary)
tapply(data$[测量变量], data$[分组变量], sd)
# 箱线图
boxplot([测量变量] ~ [分组变量], data = data,
main = "[图表标题]",
xlab = "[x轴标签]",
ylab = "[y轴标签]",
col = c("lightblue", "salmon"),
border = "black")
# 添加点以显示原始数据
stripchart([测量变量] ~ [分组变量], data = data,
method = "jitter",
vertical = TRUE,
add = TRUE,
pch = 19,
col = "darkblue")
# 可选:其他可视化方法
# 小提琴图
if(!require(vioplot)) install.packages("vioplot")
library(vioplot)
# 点图加均值和95%置信区间
library(ggplot2)
ggplot(data, aes(x = [分组变量], y = [测量变量], color = [分组变量])) +
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 = "[图表标题]",
x = "[x轴标签]",
y = "[y轴标签]") +
theme_classic() +
scale_color_manual(values = c("blue", "red"))
```
### 检验假设的统计检验
```{r}
# 由于我们有明确的方向性假设(SPF > GF)使用单侧t检验
t_test <- t.test(autoreactive ~ group, data = eae_data,
alternative = "less", # GF < SPF
var.equal = FALSE)
t_test
```
### 检查统计检验的假设
```{r}
# 1. 检查正态性
# 按组分别检查
shapiro_GF <- shapiro.test(eae_data$autoreactive[eae_data$group == "GF"])
shapiro_SPF <- shapiro.test(eae_data$autoreactive[eae_data$group == "SPF"])
cat("GF组Shapiro-Wilk正态性检验 p值:", shapiro_GF$p.value, "\n")
cat("SPF组Shapiro-Wilk正态性检验 p值:", shapiro_SPF$p.value, "\n")
# Q-Q图
par(mfrow = c(1, 2))
qqnorm(eae_data$autoreactive[eae_data$group == "GF"], main = "GF组Q-Q图")
qqline(eae_data$autoreactive[eae_data$group == "GF"])
qqnorm(eae_data$autoreactive[eae_data$group == "SPF"], main = "SPF组Q-Q图")
qqline(eae_data$autoreactive[eae_data$group == "SPF"])
par(mfrow = c(1, 1))
# 直方图
par(mfrow = c(1, 2))
hist(eae_data$autoreactive[eae_data$group == "GF"],
main = "GF组直方图",
xlab = "自身反应性T细胞百分比 (%)",
col = "lightblue")
hist(eae_data$autoreactive[eae_data$group == "SPF"],
main = "SPF组直方图",
xlab = "自身反应性T细胞百分比 (%)",
col = "salmon")
par(mfrow = c(1, 1))
# 2. 检查方差同质性
var_test <- var.test(autoreactive ~ group, data = eae_data)
var_test
# 3. 非参数检验 (如果正态性假设不满足)
wilcox_test <- wilcox.test(autoreactive ~ group, data = eae_data,
alternative = "less") # GF < SPF
wilcox_test
```
### conclusion and discussion:
研究问题是探究非致病性肠道微生物是否会触发实验性自身免疫性脑脊髓炎(EAE)的发作。我的分析流程如下:
首先我通过箱线图、小提琴图和点图等多种可视化方法展示了两组小鼠GF和SPF的自身反应性T细胞百分比数据。这些图表清晰地显示SPF组小鼠的自身反应性T细胞百分比明显高于GF组。
在选择统计检验方法时,我考虑了数据的特性:
1. 数据是两个独立组的连续测量值
2. 我们有明确的方向性假设SPF组高于GF组
3. 样本量相对较小每组8只小鼠
基于这些特点我首先选择了独立样本t检验单侧。为了验证t检验的假设我进行了以下检查
1. 正态性检验Shapiro-Wilk检验结果显示GF组p值为`r shapiro_GF$p.value`SPF组p值为`r shapiro_SPF$p.value`均大于0.05...
2. 方差同质性检验F检验结果p值为`r var_test$p.value`大于0.05...
3. t检验的p值为`r t_test$p.value`显著小于0.05...
4. Wilcoxon秩和检验结果p值为`r wilcox_test$p.value`,同样支持拒绝零假设。
结论是:特定病原体清除(SPF)小鼠的自身反应性T细胞百分比显著高于无菌(GF)小鼠。这表明非致病性肠道微生物确实会触发实验性自身免疫性脑脊髓炎(EAE)的发作。SPF小鼠体内存在非致病性肠道微生物而这些微生物在GF小鼠中缺失这种差异导致了SPF小鼠中更高比例的自身反应性T细胞进而可能促进EAE的发展