#python 两样本Ridit分析程序
import numpy as np
from scipy import stats
group = 2 #输入组数为2
rank = 4 #输入等级数
data = '1 5 18 35 26 9 10 5'
table = data.split(' ')
table = [int(x) for x in table]
aaa = np.array(table).reshape(rank, group)
print(aaa)
bbb = np.cumsum(aaa, axis=1)
#print(bbb)
bsum = np.cumsum(bbb, axis=0)
#print(bsum)
ccc = np.append([0], bsum[:, 1][0:-1])
ddd = bbb[:, 1] / 2
#print(ddd)
eee = [list(item) for item in zip(ddd, ccc)]
fff = np.cumsum(eee, axis=1)
ggg = np.sum(aaa)
hhh = (fff / ggg)[:, 1]
hhh
iii = [list(item) for item in zip(hhh, hhh)]
jjj = aaa * iii
r1, r2 = np.sum(jjj, axis=0) / np.sum(aaa, axis=0)
n1, n2 = np.sum(aaa, axis=0)
r1l = r1 - 1.96 / np.sqrt(12 * n1)
r1h = r1 + 1.96 / np.sqrt(12 * n1)
r2l = r2 - 1.96 / np.sqrt(12 * n2)
r2h = r2 + 1.96 / np.sqrt(12 * n2)
u = abs(r1 - r2) / np.sqrt((n1 + n2) / (n1 * n2) / 12)
P = (1 - stats.norm.cdf(u)) * 2
print(
'R1={:.3f},95%CI:[{:.3f},{:.3f}]\nR2={:.3f},95%CI:[{:.3f},{:.3f}]\nRidit分析结果:u={:.3f},P={:.3f}'
.format(r1, r1l, r1h, r2, r2l, r2h, u, P))
python 两样本Ridit分析程序
最新推荐文章于 2024-05-21 16:18:28 发布