测试感知现象
import numpy as np
import pandas as pd
from scipy import *
import math
%matplotlib inline
import matplotlib.pyplot as plt
现在进行的是重复衡量设计:相依样本的t检验,检验并衡量不同总体的样本
重复衡量设计:零假设两个总体均值将相同
还有另外两种相依样本t检验 :
- 纵向设计:在一个时间点衡量某个变量,晚些时候的某个时间点再衡量同一变量检验这两个时刻该变量是否存在显著性差异
- 预期检验和后期检验:先衡量某个变量然后进行某种处理,然后在处理之后再对同一样本衡量同一变量,看看处理措施是否导致了显著效应,零假设是保持不变,记载在处理前和处理后该变量没有出现显著变化
参考链接[!优达]https://classroom.udacity.com/nanodegrees/nd002-cn-basic/parts/b4c7a2f7-3554-407c-8d55-ac1470b19921/modules/975b5faa-1462-4a84-be94-d3e6381629a0/lessons/4578095863/concepts/2310203270923
df=pd.read_csv('/Users/zhongyaode/Desktop/stroopdata.csv')
检验的自变量是:单词含义和字体颜色是否一致
检验的因变量是:识别这个词的颜色所需要的时间
这里因为只要识别字体的颜色,而不需要识别单词的含义,所以认为单词含义和字体颜色是否一致对与识别颜色的时间没有影响,
零假设:H0:μ = μ0;认为单词含义和字体颜色是否一致对识别颜色没有显著差异
当前总体的参数和干预后出现的新总体参数没有显著差异
对立假设:H1:μ!=μ0;认为单词含义和字体颜色是否一致对识别颜色有显著差异
当前总体的参数和干预后出现的新总体参数有显著差异
这里μ表示单词含义与单词颜色一致所用的平均时间即Congrent的均值
μ0表示单词含义与单词颜色不一致所用的平均时间即Incongruent的均值
这里不需要预测效应的方向所以对立假设用μ!=μ0;
这里选择a=0.05的水平
因为不知道两个样本的的总体均值和标准偏差,所以这里使用t统计法
这里样本有24个自由度为23,α水平是005的双尾检验,
t的临界值是 2.69和-2.69
t的统计量 即标准误差 t=(M-μ0)/(S/sqrt(n))
s是标准误差,求方差时除以(n-1)再开根号
如果t统计量不在t临界值的范围内就拒接h0假设
α、β、δ、Σ
双尾检验:H0:μ = μ0 ,H_1:\mu\ne\mu_0
教学中的做法:
1.根据实际情况提出原假设和备择假设;
2.根据假设的特征,选择合适的检验统计量;
3.根据样本观察值,计算检验统计量的观察值(obs);
4.选择许容显著性水平,并根据相应的统计量的统计分布表查出相应的临界值(ctrit);
5.根据检验统计量观察值的位置决定原假设取舍。
μc表示Congruent的均值
μI表示Incongruent的均值
样本量是24
零假设是 H0: μc=μI
对立假设是: HA: μc!=μI
c=df['Congruent'].mean()
I=df['Incongruent'].mean()
#μc-μI的差异点点估计是,均值的差异
Md=c-I
print'均值的差异是:',Md
均值的差异是: -7.96479166667
#想直到这个差异与其他差异的对比结果,所以需要算出差异的标准误差 即s
#这个例子中需要计算每个差异的标准偏差
#用分母 n-1 算出标准偏差,用D表示差异
D=df['Congruent']-df['Incongruent']#这是所有的差异
#计算平均差异
D_mean=DN.mean()
#现在计算标准偏差
d_mean=np.power(D-D_mean,2)#距离均值的平方偏差
SS=(d_mean.sum())/(d_mean.count()-1)
S=sqrt(SS)
print '差异的标准偏差S:',S
差异的标准偏差S: 4.86482691036
#下面计算t统计量
#t=(μc-μI)/(S/(sqrt(n)))
t=Md/(S/sqrt(d_mean.count()))
print 't的统计量是:',t
t的统计量是: -8.02070694411
print '对于a为0.05来水,t的临界值查表得是2.69和-2.69'
对于a为0.05来水,t的临界值查表得是2.69和-2.69
print 'Md的差异点估计是',Md
Md的差异点估计是 -7.96479166667
因为t统计量已经超过这个t临界值位于临界区内
所以我们拒绝零假设,这意味着单词含义和单词颜色一致与单词含义和单词颜色不一致相比
单词含义和单词颜色一致时所需的时间少些
因为这是实验性设计,可以作出因果陈述,我们可以说单词含义与单词颜色是否一致与识别颜色时间之间存在因果关系
现在计算效应衡量指标
效应衡量指标等于均值差异除以差异标准偏差,均值差异是Md,标准偏差是S
#Cohen's d
d=Md/S
print '效应衡量指标是d:',d
效应衡量指标是d: -1.63721994912
计算总体均值差异的置信区间
#CI:MD-tcrihcal(Sd/sqrt(n)),MD+tcrihcal(Sd/sqrt(n))
#这里的tcrihcal是t临界值
Md-2.69*(S/(sqrt(24))),Md+2.69*(S/(sqrt(24)))
(-10.636038694220403, -5.2935446391129304)
可以得出结论,平均下来与单词含义和单词颜色不一致相比,辨别单词颜色和含义一致的时间要少5.29-10.63秒
可视化展示数据
#数据是连续数据,用直方图
fig=plt.figure()
x=df['Congruent']
ax=fig.add_subplot(111)
numBins=7
ax.hist(x,numBins,color='red',alpha=0.8,rwidth=0.5)
plt.title(u'Congruent')
plt.xlabel('time')
<matplotlib.text.Text at 0x10d79ad90>
output_34_1.png
#正态分布图
%config InlineBackend.figure_format='retina'
def normfun(x,mu,sigma):
pdf=np.exp(-((x-mu)**2)/(2*sigma**2))/(sigma*np.sqrt(2*np.pi))
return pdf
c_mean=df['Congruent'].mean()
c_std=df['Congruent'].std()
x=np.arange(5,30,1)
y=normfun(x,c_mean,c_std)
plt.plot(x,y)
plt.hist(df['Congruent'],bins=10,rwidth=0.9,normed=True)
plt.title('Congruent')
plt.xlabel('time')
<matplotlib.text.Text at 0x10cdad850>
output_39_1.png
c_mean ,c_std
(14.051124999999999, 3.5593579576451955)
结果分析
数据集的平均值是14.05;偏差是3.559波动行很小
过了十五之后呈促步下降趋势
数据在15频数最大
mean=df['Incongruent'].mean()
std=df['Incongruent'].std()
x=np.arange(10,40,1)
y=normfun(x,mean,std)
plt.plot(x,y)
plt.hist(df['Incongruent'],bins=10,rwidth=0.9,normed=True)
plt.title('Incongruent')
plt.xlabel('time')
<matplotlib.text.Text at 0x110fabd90>
output_44_1.png
mean,std
(22.015916666666666, 4.7970571224691376)
结果分析
数据集均值是22.01;偏差是4.79波动行很小,但是比Congruent大
数据集在16-10之间较为稳定
偏差较大的地方:1)在20时频数最大,2)在30左右没有数据,3)在35有个较大的频数
中心性测量
#均值
df['Congruent'].mean(),df['Incongruent'].mean()
(14.051124999999999, 22.015916666666666)
dff=df
#排序选择中位数
# Con=sort(dff['Congruent'])
# median=(Con[dff['Congruent'].count()/2]+Con[dff['Congruent'].count()/2-1])/2
#直接用函数
median=dff['Congruent'].median()
print 'Congruent的中位数是:',median
print 'Congruent的中位数是:',c_mean
Congruent的中位数是: 14.3565
Congruent的中位数是: 14.051125
median=dff['Incongruent'].median()
print 'Incongruent的中位数是:',median
print 'Incongruent的均值是:', mean
Incongruent的中位数是: 21.0175
Incongruent的均值是: 22.0159166667
#对比中位数,发现Incongruent比Congruent的中位数是多了大概7秒
可变性测量
#方差
print 'Congruent的方差是:',dff['Congruent'].var()
print 'Incongruent的方差数是:',dff['Incongruent'].var()
Congruent的方差是: 12.6690290707
Incongruent的方差数是: 23.0117570362
#可以发现Incongruent的波动性比Congruent更大
参考资料https://classroom.udacity.com/nanodegrees/nd002-cn-basic/parts/b4c7a2f7-3554-407c-8d55-ac1470b19921/modules/975b5faa-1462-4a84-be94-d3e6381629a0/lessons/4578095863/concepts/1470193510923
https://classroom.udacity.com/nanodegrees/nd002-cn-basic/parts/b4c7a2f7-3554-407c-8d55-ac1470b19921/modules/975b5faa-1462-4a84-be94-d3e6381629a0/lessons/4578095863/concepts/2310203270923
[!正态分布]<http://www.jianshu.com/p/83cc892eb24a>
< 《http://www.psychology.emory.edu/clinical/bliwise/Tutorials/TOM/meanstests/assump.htm
[纵向研究 ]https://en.wikipedia.org/wiki/Longitudinal_study