1

我有一个数据集,它有两个标签,标签 1 = 0(案例),标签 2 = 1(控制)。我已经计算了两个不同标签的平均值。此外,我需要计算两个样本 t 检验(相关)和两个样本秩和检验。我的数据集如下所示:

SRA ID  ERR169499           ERR169500           ERR169501           mean_ctrl   mean_case
Label   1                   0                   1
TaxID   PRJEB3251_ERR169499 PRJEB3251_ERR169500 PRJEB3251_ERR169501
333046  0.05                0                   0.4
1049    0.03                0.9                 0
337090  0.01                0.6                 0.7

我是统计新手。到目前为止我的代码是这样的:

label = []
data = {}

x = open('final_out_transposed.csv','rt')
for r in x:
datas = r.split(',')
if datas[0] == ' Label':
    label.append(r.split(",")[1:])
label = label[0]
label[-1] = label[-1].replace('\n','')
counter = len(label)

for row in file1:
content = row.split(',')
if content[0]=='SRA ID' or content[0]== 'TaxID' or content[0]==' Label':
    pass
else:
    dt = row.split(',')
    dt[-1] = dt[-1].replace('\n','')
    data[dt[0]]=dt[1:]
keys = list(data)

sum_file = open('sum.csv','w')
for key in keys:
sum_case = 0
sum_ctrl = 0
count_case = 0
count_ctrl = 0
mean_case = 0
mean_ctrl = 0
print(len(label))
for i in range(counter):
    print(i)
    if label[i] == '0' or label[i] == 0:
        sum_case=np.float64(sum_case)+np.float64(data[key][i])
        count_case = count_case+1
        mean_case = sum_case/count_case
    else:
        sum_ctrl = np.float64(sum_ctrl)+np.float64(data[key][i])
        count_ctrl = count_ctrl+1
        mean_ctrl = sum_ctrl/count_ctrl

任何帮助将不胜感激。

4

1 回答 1

1

我不会使用 open 来读取您的 csv 文件,而是使用 Pandas。这将把它放在一个更容易使用的数据框中

import pandas as pd
data_frame = pd.read_csv('final_out_transposed.csv')

对于两个样本相关的 T 检验,您想使用ttest_rel

注意ttest_ind 是针对独立组的。由于您特别要求依赖组,请使用 ttest_rel。

从你上面的例子中很难看出你的两列样本数据在哪里,但想象一下我有以下由“案例”和“控制”组成的数据。我可以使用 pandas 计算依赖的两个样本 t 检验,如下所示:

import pandas as pd
from scipy.stats import ttest_rel
data_frame = pd.DataFrame({
'case':[55, 43, 51, 62, 35, 48, 58, 45, 48, 54, 56, 32],
'control':[48, 38, 53, 58, 36, 42, 55, 40, 49, 50, 58, 25]})
(t_stat, p) = ttest_rel(data_frame['control'], data_frame['case'])
print (t_stat)
print (p)

p 是 p 值,t_stat 是 t 统计量。您可以在文档中阅读有关此内容的更多信息

以类似的方式,一旦您将样本 .csv 数据放入数据框中,您就可以执行秩和检验:

from scipy.stats import ranksums
(t_stat, p) = ranksums(data_frame['control'], data_frame['case'])

排名和的文档

于 2018-01-19T15:43:49.503 回答