Skip to content

Commit

Permalink
docs: update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
LeafYeeXYZ committed Oct 21, 2024
1 parent 870ea61 commit 55441ca
Show file tree
Hide file tree
Showing 11 changed files with 149 additions and 64 deletions.
167 changes: 126 additions & 41 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,36 @@
- [3.3 缺失值插值处理](#33-缺失值插值处理)
- [3.4 生成标准化/中心化子变量](#34-生成标准化中心化子变量)
- [4 绘图视图](#4-绘图视图)
- [4.1 (writing) 折线图](#41-writing-折线图)
- [4.1.1 基础折线图](#411-基础折线图)
- [4.1.2 平行折线图](#412-平行折线图)
- [4.2 (writing) 散点图](#42-writing-散点图)
- [4.2.1 基础散点图](#421-基础散点图)
- [4.2.2 三维散点图](#422-三维散点图)
- [4.3 (writing) 直方图/柱状图](#43-writing-直方图柱状图)
- [4.3.1 三维柱状图](#431-三维柱状图)
- [4.4 (writing) 箱线图](#44-writing-箱线图)
- [4.4.1 基础箱线图](#441-基础箱线图)
- [4.5 (writing) 词云图](#45-writing-词云图)
- [5 统计视图](#5-统计视图)
- [5.1 描述统计](#51-描述统计)
- [5.2 t 检验](#52-t-检验)
- [5.2.1 单样本 t 检验](#521-单样本-t-检验)
- [5.2.2 配对样本 t 检验](#522-配对样本-t-检验)
- [5.2.3 独立样本 t 检验](#523-独立样本-t-检验)
- [5.3 🚧 方差分析](#53--方差分析)
- [5.4 非参数检验](#54-非参数检验)
- [5.4.1 Kolmogorov-Smirnov 检验](#541-kolmogorov-smirnov-检验)
- [5.4.2 Levene 检验](#542-levene-检验)
- [5.5 相关和回归](#55-相关和回归)
- [5.5.1 Pearson 相关检验](#551-pearson-相关检验)
- [6 工具视图](#6-工具视图)
- [6.1 正态分布可视化演示工具](#61-正态分布可视化演示工具)
- [6.2 统计量与P值转换工具](#62-统计量与p值转换工具)
- [PsychPen 开发文档](#psychpen-开发文档)
- [1 项目结构](#1-项目结构)
- [2 开发说明](#2-开发说明)
- [3 开发路线图](#3-开发路线图)
- [3 开发计划](#3-开发计划)

## 1 项目简介

Expand Down Expand Up @@ -110,12 +132,102 @@ PsychPen 是一个用于心理学/教育学专业的统计检验分析和图表

![](readme/plot-1.png)

### 4.1 (writing) 折线图

#### 4.1.1 基础折线图

#### 4.1.2 平行折线图

### 4.2 (writing) 散点图

#### 4.2.1 基础散点图

#### 4.2.2 三维散点图

### 4.3 (writing) 直方图/柱状图

#### 4.3.1 三维柱状图

### 4.4 (writing) 箱线图

#### 4.4.1 基础箱线图

### 4.5 (writing) 词云图

## 5 统计视图

在统计视图中, 你可以在页面左上角选择你要进行的统计检验类型, 进入对应的统计检验页面. 之后, 根据页面内容选择你要进行统计检验的变量, 点击 `计算` 按钮即可进行统计检验. 检验结果会显示在页面右侧的结果区域

注: 本应用的所有显著性标注 * 均表示 P < 0.05, ** 表示 P < 0.01, *** 表示 P < 0.001

![](readme/stat-1.png)

### 5.1 描述统计

在描述统计页面中, 你可以查看你选择的变量的描述性统计信息. 既可以对被试内变量 (一个或多个导入的列) 进行描述统计, 也可以对被试间变量 (一列作为数据, 一列作为分组) 进行描述统计. 描述统计信息包括均值、标准差、最大值、最小值、中位数、四分位数等, 可按需选择

| 被试内变量 | 被试间变量 |
| :---: | :---: |
| ![](readme/stat-2.png) | ![](readme/stat-3.png) |

### 5.2 t 检验

t 检验是最基础的统计检验之一, 用于检验两组数据 (或一组数据与指定值) 的均值是否有显著差异. 显著差异意味着两组数据的均值差异不是由抽样误差造成的, 而是由总体差异造成的. 结果中给出的 P 值表示"这个差异是由抽样误差造成的"的概率, P 值越小, 说明差异越显著; 通常, P 值小于 0.05 (即差异由抽样误差造成的概率小于 5%) 时, 认为差异显著

t 检验有一些前提假设, 如数据服从正态分布、方差齐性. 在进行 t 检验前, 推荐先使用 Kolmogorov-Smirnov 检验 (检验数据是否服从正态分布) 和 Levene 检验 (检验方差是否齐性), 如果数据符合前提假设, 再进行 t 检验; 否则, 可以考虑使用非参数检验

#### 5.2.1 单样本 t 检验

单样本 t 检验用于检验一组数据的均值是否与指定值有显著差异. 在单样本 t 检验页面中, 你可以选择你要进行检验的变量, 输入你要检验的指定值, 点击 `计算` 按钮即可进行单样本 t 检验. 除此之外, 你还可以自定义显著性水平和检验方向

![](readme/stat-4.png)

#### 5.2.2 配对样本 t 检验

配对样本 t 检验用于检验两组配对数据 (即同一个被试的两次测量数据) 的均值是否有显著差异. 在配对样本 t 检验页面中, 你可以选择你要进行检验的变量 (共两个), 点击 `计算` 按钮即可进行配对样本 t 检验. 除此之外, 你还可以自定义检验差异值、显著性水平和检验方向

![](readme/stat-5.png)

#### 5.2.3 独立样本 t 检验

独立样本 t 检验用于检验两组独立数据 (即两组不同被试的数据) 的均值是否有显著差异. 在独立样本 t 检验页面中, 你可以选择你要进行检验的变量, 再选择用于分组的变量, 点击 `计算` 按钮即可进行独立样本 t 检验. 除此之外, 你还可以自定义检验差异值、显著性水平和检验方向

![](readme/stat-6.png)

### 5.3 🚧 方差分析

### 5.4 非参数检验

检验均值、中位数等"参数"是否有显著差异的方法称为参数检验; 而检验分布、排序等"非参数"是否有显著差异的方法称为非参数检验. 非参数检验不需要数据满足正态分布和方差齐性等前提假设 (一些非参数检验本身就是对这些假设的检验)

#### 5.4.1 Kolmogorov-Smirnov 检验

Kolmogorov-Smirnov 检验用于检验数据是否服从某个分布 (通常是正态分布). 在 Kolmogorov-Smirnov 检验页面中, 你可以选择你要进行检验的变量 (可以一次选择多个), 点击 `计算` 按钮即可进行 Kolmogorov-Smirnov 检验. 除此之外, 你还可以自定义显著性水平、检验方向和分布类型 (默认为正态分布, 还可以选择均匀分布)

注意: 结果的 P 值不显著 (大于 0.05) 时, 才说明数据服从正态分布 (因为检验的原假设是"数据服从XX分布")

![](readme/stat-7.png)

#### 5.4.2 Levene 检验

Levene 检验用于检验数据是否具有方差齐性. 在 Levene 检验页面中, 你可以选择你要进行检验的变量的类型 (被试内变量/被试间变量). 如果是被试内变量, 你需要选择你要进行检验的变量 (至少选择两个); 如果是被试间变量, 你需要选择你要进行检验的数据变量和分组变量. 点击 `计算` 按钮即可进行 Levene 检验. 除此之外, 你还可以自定义显著性水平

注意: 结果的 P 值不显著 (大于 0.05) 时, 才说明数据具有方差齐性 (因为检验的原假设是"数据具有方差齐性")

| 被试内变量 | 被试间变量 |
| :---: | :---: |
| ![](readme/stat-8.png) | ![](readme/stat-9.png) |

### 5.5 相关和回归

#### 5.5.1 Pearson 相关检验

Pearson 相关检验用于检验两组数据之间的线性相关性. 在 Pearson 相关检验页面中, 你可以选择你要进行检验的变量 (至少选择两个), 点击 `计算` 按钮即可进行 Pearson 相关检验. 除此之外, 你还可以自定义显著性水平和检验方向

结果除了会给出你选择的变量两两之间的各种统计量 (如相关系数、显著性水平、置信区间等), 还会给出一个所有变量之间的相关矩阵 (显示相关系数和显著性水平)

![](readme/stat-10.png)

## 6 工具视图

工具视图中的功能无需导入数据即可食用. 你可在页面上方选择你要使用的工具, 进入对应的工具页面
Expand Down Expand Up @@ -153,6 +265,7 @@ App.tsx
| ├── tool/*.tsx # 工具视图的子组件
lib/useZustand.tsx # 全局状态管理
lib/utils.ts # 工具函数
lib/types.ts # 类型定义
```

## 2 开发说明
Expand All @@ -175,48 +288,20 @@ lib/utils.ts # 工具函数
bun run build
```

## 3 开发路线图

- **数据管理**
- [x] 数据导入 (基于 `sheet.js`)
- [x] 数据和变量预览 (基于 `AG-Grid`)
- [x] 支持导入 `.sav` 文件 (基于 [mhermher/savvy](https://github.com/mhermher/savvy) `但是不知道为什么不能直接安装, 只能手动下载源码`)
- [x] 数据导出 (基于 `sheet.js`)
- [x] 基础的缺失值定义
- [x] 缺失值插值处理
- [x] 将某个变量的所有数值标准化, 生成新的变量
- [x] 将某个变量的所有数值中心化, 生成新的变量
## 3 开发计划

已完成功能见上文

- **数据**
- [ ] 将每个变量离散化为指定若干个区间, 生成新的变量 (等宽/等频/聚类分析 `k-means`)
- [ ] 数据过滤/筛选 (可能需要重构数据管理模块)
- [ ] 根据现有变量计算生成新的变量 (可能需要重构数据管理模块)
- **绘图功能** (基于 `echarts`)
- 箱线图
- [x] 基础箱线图
- 散点图
- [x] 基础散点图
- [x] 3D散点图
- 折线图
- [x] 基础折线图
- [ ] 堆叠折线图
- [x] 平行折线图
- 直方图
- [ ] 基础直方图 (可以绘制误差线)
- [x] 三维直方图
- 其他
- [x] 词云图 (基于 `echarts-wordcloud``jieba-wasm`)
- [x] 图像导出 (基于 `html2canvas`)
- **统计功能** (近期基于 `@stdlib/stdlib` 库, 远期基于 `WebAssembly` (`pyodide` / `AssemblyScript`) 实现)
- t 检验
- [x] 单样本 t 检验
- [x] 独立样本 t 检验
- [x] 配对样本 t 检验
- 非参数检验
- [x] Kolmogorov-Smirnov 检验
- [x] Levene 检验
- 相关和回归
- [x] Pearson 相关系数
- **其他工具**
- [x] 正态分布可视化演示工具
- [x] 统计量与P值转换工具
- **绘图**
- [ ] 堆叠折线图
- [ ] 基础直方图 (可以绘制误差线)
- **统计** (近期基于 `@stdlib/stdlib` 库, 远期基于 `WebAssembly` (`pyodide` / `AssemblyScript` / `Rust`))
- [ ] One-Way ANOVA
- [ ] (中远期) 简单中介效应分析
- **工具**

> 本项目使用了 `ECharts` 作为图表绘制库: `Li, D., Mei, H., Shen, Y., Su, S., Zhang, W., Wang, J., Zu, M., & Chen, W. (2018). ECharts: A declarative framework for rapid construction of web-based visualization. Visual Informatics, 2(2), 136–146. https://doi.org/10.1016/j.visinf.2018.04.011`
Binary file added readme/stat-10.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added readme/stat-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added readme/stat-3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added readme/stat-4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added readme/stat-5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added readme/stat-6.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added readme/stat-7.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added readme/stat-8.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added readme/stat-9.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
46 changes: 23 additions & 23 deletions src/components/StatisticsView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,29 @@ const CASCADER_OPTIONS: Option[] = [
value: 'Description',
label: '描述统计',
},
{
value: 'TTest',
label: 'T检验',
children: [
{
value: 'OneSampleTTest',
label: '单样本T检验',
},
{
value: 'TwoSampleTTest',
label: '独立样本T检验',
},
{
value: 'PeerSampleTTest',
label: '配对样本T检验',
},
],
},
{
value: 'ANOVA',
label: '方差分析',
disabled: true,
},
{
value: 'NonParametricTest',
label: '非参数检验',
Expand All @@ -43,29 +66,6 @@ const CASCADER_OPTIONS: Option[] = [
},
],
},
{
value: 'TTest',
label: 'T检验',
children: [
{
value: 'OneSampleTTest',
label: '单样本T检验',
},
{
value: 'TwoSampleTTest',
label: '独立样本T检验',
},
{
value: 'PeerSampleTTest',
label: '配对样本T检验',
},
],
},
{
value: 'ANOVA',
label: '方差分析',
disabled: true,
},
]
const CASCADER_ONCHANGE = (value: string[], set: (page: React.ReactElement) => void) => {
switch (value[1]) {
Expand Down

0 comments on commit 55441ca

Please sign in to comment.