Skip to content

Commit

Permalink
fix: 移除所有显著性输入框
Browse files Browse the repository at this point in the history
  • Loading branch information
LeafYeeXYZ committed Oct 30, 2024
1 parent d08a6f7 commit 0731111
Show file tree
Hide file tree
Showing 6 changed files with 17 additions and 88 deletions.
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -216,19 +216,19 @@ t 检验有一些前提假设, 如数据服从正态分布、方差齐性. 在

#### 5.2.1 单样本 t 检验

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

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

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

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

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

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

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

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

Expand All @@ -252,7 +252,7 @@ Kolmogorov-Smirnov 检验用于检验数据是否服从某个分布 (通常是

#### 5.4.2 Levene 检验

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

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

Expand All @@ -272,7 +272,7 @@ Levene 检验用于检验数据是否具有方差齐性. 在 Levene 检验页面

#### 5.5.1 Pearson 相关检验

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

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

Expand Down
22 changes: 4 additions & 18 deletions src/statistics/LeveneTest.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { useZustand } from '../lib/useZustand'
import { Select, Input, Button, Form, Radio } from 'antd'
import { Select, Button, Form, Radio } from 'antd'
import { useState } from 'react'
import leveneTest from '@stdlib/stats/levene-test'
import { flushSync } from 'react-dom'
Expand All @@ -12,8 +12,6 @@ type Option = {
variable?: string
/** 被试内变量名 */
variables?: string[]
/** 显著性水平, 默认 0.05 */
alpha: number
/** 分组变量 */
group?: string
}
Expand Down Expand Up @@ -61,8 +59,8 @@ export function LeveneTest() {
.map((v) => Number(v))
) // 理论上这里也要过滤掉空数组, 但是正常使用不会出现这种情况, 故为了性能暂不处理
}
// @ts-expect-error 类型推断错误, 实际没写错
const { statistic, pValue, df } = leveneTest.apply(null, [...data, { alpha: values.alpha }])
// @ts-expect-error 函数可以接受多个数组作为参数
const { statistic, pValue, df } = leveneTest(...data)
const result = generatePResult(statistic, pValue)
setResult({
...values,
Expand Down Expand Up @@ -96,7 +94,6 @@ export function LeveneTest() {
autoComplete='off'
initialValues={{
expect: 'normal',
alpha: 0.05,
alternative: 'two-sided',
type: 'peer',
}}
Expand Down Expand Up @@ -178,17 +175,6 @@ export function LeveneTest() {
</Form.Item>
</>
)}
<Form.Item
label='显著性水平'
name='alpha'
rules={[{ required: true, message: '请输入显著性水平' }]}
>
<Input
className='w-full'
placeholder='请输入显著性水平'
type='number'
/>
</Form.Item>
<Form.Item>
<Button
className='w-full mt-4'
Expand All @@ -208,7 +194,7 @@ export function LeveneTest() {
<div className='w-full h-full overflow-auto'>

<p className='text-lg mb-2 text-center w-full'>Levene 检验</p>
<p className='text-xs mb-3 text-center w-full'>H<sub>0</sub>: 各变量/组满足方差齐性 | 显著性水平(α): {result.alpha}</p>
<p className='text-xs mb-3 text-center w-full'>H<sub>0</sub>: 各变量/组满足方差齐性 | 显著性水平(α): 0.05</p>
<table className='three-line-table'>
<thead>
<tr>
Expand Down
18 changes: 2 additions & 16 deletions src/statistics/OneSampleTTest.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@ type Option = {
variable: string
/** 检验值, 默认 0 */
expect: number
/** 显著性水平, 默认 0.05 */
alpha: number
/** 单双尾检验, 默认 two-sided */
alternative: 'two-sided' | 'less' | 'greater'
}
Expand All @@ -33,7 +31,7 @@ export function OneSampleTTest() {
.map((row) => row[values.variable])
.filter((v) => typeof v !== 'undefined' && !isNaN(Number(v)))
.map((v) => Number(v))
const result = ttest(data, { mu: +values.expect, alpha: +values.alpha, alternative: values.alternative })
const result = ttest(data, { mu: +values.expect, alternative: values.alternative })
setResult({
variable: values.variable,
expect: +values.expect,
Expand Down Expand Up @@ -64,7 +62,6 @@ export function OneSampleTTest() {
autoComplete='off'
initialValues={{
expect: 0,
alpha: 0.05,
alternative: 'two-sided',
}}
disabled={disabled}
Expand Down Expand Up @@ -96,17 +93,6 @@ export function OneSampleTTest() {
type='number'
/>
</Form.Item>
<Form.Item
label='显著性水平'
name='alpha'
rules={[{ required: true, message: '请输入显著性水平' }]}
>
<Input
className='w-full'
placeholder='请输入显著性水平'
type='number'
/>
</Form.Item>
<Form.Item
label='单双尾检验'
name='alternative'
Expand Down Expand Up @@ -140,7 +126,7 @@ export function OneSampleTTest() {
<div className='w-full h-full overflow-auto'>

<p className='text-lg mb-2 text-center w-full'>单样本T检验 ({result.alternative === 'two-sided' ? '双尾' : '单尾'})</p>
<p className='text-xs mb-3 text-center w-full'>方法: Student's T Test | H<sub>0</sub>: 均值={result.expect} | 显著性水平(α): {result.alpha}</p>
<p className='text-xs mb-3 text-center w-full'>方法: Student's T Test | H<sub>0</sub>: 均值={result.expect} | 显著性水平(α): 0.05</p>
<table className='three-line-table'>
<thead>
<tr>
Expand Down
19 changes: 2 additions & 17 deletions src/statistics/PearsonCorrelationTest.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { useZustand } from '../lib/useZustand'
import { Select, Input, Button, Form } from 'antd'
import { Select, Button, Form } from 'antd'
import { useState } from 'react'
import pearsonTest from '@stdlib/stats/pcorrtest'
import { flushSync } from 'react-dom'
Expand All @@ -8,8 +8,6 @@ import { generatePResult } from '../lib/utils'
type Option = {
/** 变量名 */
variable: string[]
/** 显著性水平, 默认 0.05 */
alpha: number
/** 单双尾检验, 默认 two-sided */
alternative: 'two-sided' | 'less' | 'greater'
}
Expand Down Expand Up @@ -40,7 +38,6 @@ export function PearsonCorrelationTest() {
for (let j = i + 1; j < values.variable.length; j++) {
const data = [values.variable[i], values.variable[j]].map((variable) => filteredRows.map((row) => Number(row[variable])))
const result = pearsonTest(data[0], data[1], {
alpha: values.alpha,
alternative: values.alternative,
})
const r = generatePResult(result.pcorr, result.pValue)
Expand Down Expand Up @@ -83,7 +80,6 @@ export function PearsonCorrelationTest() {
autoComplete='off'
initialValues={{
expect: 'normal',
alpha: 0.05,
alternative: 'two-sided',
}}
disabled={disabled}
Expand All @@ -108,17 +104,6 @@ export function PearsonCorrelationTest() {
))}
</Select>
</Form.Item>
<Form.Item
label='显著性水平'
name='alpha'
rules={[{ required: true, message: '请输入显著性水平' }]}
>
<Input
className='w-full'
placeholder='请输入显著性水平'
type='number'
/>
</Form.Item>
<Form.Item
label='单双尾检验'
name='alternative'
Expand Down Expand Up @@ -152,7 +137,7 @@ export function PearsonCorrelationTest() {
<div className='w-full h-full overflow-auto'>

<p className='text-lg mb-2 text-center w-full'>Pearson 相关系数检验</p>
<p className='text-xs mb-3 text-center w-full'>H<sub>0</sub>: 两个变量的相关系数{result.alternative === 'two-sided' ? '等于' : result.alternative === 'less' ? '小于' : '大于'}零 | 显著性水平(α): {result.alpha}</p>
<p className='text-xs mb-3 text-center w-full'>H<sub>0</sub>: 两个变量的相关系数{result.alternative === 'two-sided' ? '等于' : result.alternative === 'less' ? '小于' : '大于'}零 | 显著性水平(α): 0.05</p>
<table className='three-line-table'>
<thead>
<tr>
Expand Down
18 changes: 2 additions & 16 deletions src/statistics/PeerSampleTTest.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@ type Option = {
variable2: string
/** 检验值, 默认 0 */
expect: number
/** 显著性水平, 默认 0.05 */
alpha: number
/** 单双尾检验, 默认 two-sided */
alternative: 'two-sided' | 'less' | 'greater'
}
Expand Down Expand Up @@ -44,7 +42,7 @@ export function PeerSampleTTest() {
data2.push(Number(row[values.variable2]))
}
}
const result = ttest(data1, data2, { mu: +values.expect, alpha: +values.alpha, alternative: values.alternative })
const result = ttest(data1, data2, { mu: +values.expect, alternative: values.alternative })
const diff = data1.map((v, i) => v - data2[i])
setResult({
variable1: values.variable1,
Expand Down Expand Up @@ -91,7 +89,6 @@ export function PeerSampleTTest() {
autoComplete='off'
initialValues={{
expect: 0,
alpha: 0.05,
alternative: 'two-sided',
}}
disabled={disabled}
Expand Down Expand Up @@ -159,17 +156,6 @@ export function PeerSampleTTest() {
type='number'
/>
</Form.Item>
<Form.Item
label='显著性水平'
name='alpha'
rules={[{ required: true, message: '请输入显著性水平' }]}
>
<Input
className='w-full'
placeholder='请输入显著性水平'
type='number'
/>
</Form.Item>
<Form.Item
label='单双尾检验'
name='alternative'
Expand Down Expand Up @@ -203,7 +189,7 @@ export function PeerSampleTTest() {
<div className='w-full h-full overflow-auto'>

<p className='text-lg mb-2 text-center w-full'>配对样本T检验 ({result.alternative === 'two-sided' ? '双尾' : '单尾'})</p>
<p className='text-xs mb-3 text-center w-full'>方法: Student's T Test | H<sub>0</sub>: 均值差异={result.expect} | 显著性水平(α): {result.alpha}</p>
<p className='text-xs mb-3 text-center w-full'>方法: Student's T Test | H<sub>0</sub>: 均值差异={result.expect} | 显著性水平(α): 0.05</p>
<table className='three-line-table'>
<thead>
<tr>
Expand Down
18 changes: 2 additions & 16 deletions src/statistics/TwoSampleTTest.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@ type Option = {
groupVar: string
/** 检验值, 默认 0 */
expect: number
/** 显著性水平, 默认 0.05 */
alpha: number
/** 单双尾检验, 默认 two-sided */
alternative: 'two-sided' | 'less' | 'greater'
}
Expand Down Expand Up @@ -44,7 +42,7 @@ export function TwoSampleTTest() {
row[values.groupVar] === groups[1] && data2.push(Number(row[values.dataVar]))
}
}
const result = ttest2(data1, data2, { difference: +values.expect, alpha: +values.alpha, alternative: values.alternative })
const result = ttest2(data1, data2, { difference: +values.expect, alternative: values.alternative })
setResult({
dataVar: values.dataVar,
groupVar: values.groupVar,
Expand Down Expand Up @@ -84,7 +82,6 @@ export function TwoSampleTTest() {
autoComplete='off'
initialValues={{
expect: 0,
alpha: 0.05,
alternative: 'two-sided',
}}
disabled={disabled}
Expand Down Expand Up @@ -152,17 +149,6 @@ export function TwoSampleTTest() {
type='number'
/>
</Form.Item>
<Form.Item
label='显著性水平'
name='alpha'
rules={[{ required: true, message: '请输入显著性水平' }]}
>
<Input
className='w-full'
placeholder='请输入显著性水平'
type='number'
/>
</Form.Item>
<Form.Item
label='单双尾检验'
name='alternative'
Expand Down Expand Up @@ -196,7 +182,7 @@ export function TwoSampleTTest() {
<div className='w-full h-full overflow-auto'>

<p className='text-lg mb-2 text-center w-full'>独立样本T检验 ({result.alternative === 'two-sided' ? '双尾' : '单尾'})</p>
<p className='text-xs mb-3 text-center w-full'>方法: Student's T Test | H<sub>0</sub>: 均值差异={result.expect} | 显著性水平(α): {result.alpha}</p>
<p className='text-xs mb-3 text-center w-full'>方法: Student's T Test | H<sub>0</sub>: 均值差异={result.expect} | 显著性水平(α): 0.05</p>
<table className='three-line-table'>
<thead>
<tr>
Expand Down

0 comments on commit 0731111

Please sign in to comment.