用Python学习统计学基础-2

用Python学习统计学基础-2

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hjh00/article/details/48230399

 

五、计算简单相关系数

相关系数(correlation coefficient)是反映两个变量之间关系的量化指标。这个统计值得值域范围是-1到1。当关心的是一个变量发生变化时,另一个变量如何变化, 可以采用计算相关系数的办法。相关反映变量间关系的动态性质。如果变量变化方向相同,相关是正相关(positive correction);如果变量变化方向相反,相关是负相关(negative correlation)。简单皮尔逊积矩相关系数的计算公式:

相关系数真正有意义的部分是测量一个变量与另一个共变的变量之间的距离。用python计算的示例,直接用scipy.stats.stats的pearsonr函数,也可以自己实现计算过程。

 

import scipy.stats.stats as stats
x=[2,4,5,6,4,7,8,5,6,7]
y=[3,2,6,5,3,6,5,4,4,5]
r=stats.pearsonr(x,y)[0]
print r
输出

 

0.69213308132

一种简单直观的表示相关的方式是建立所谓的散点图(scatterplot),上述例子散点图。

 

import matplotlib.pylab as plt
x=[2,4,5,6,4,7,8,5,6,7]
y=[3,2,6,5,3,6,5,4,4,5]
plt.xlim(0,9)
plt.ylim(1,7)
plt.xlabel('x axis')
plt.ylabel('y axis')
plt.plot(x,y,'ro')
plt.show()
输出

 

不是所有的相关都是线性相关(linear correlation),比如年龄和记忆力之间的相关,少年时期,很强的正相关;青年和中年时期,没什么变化;老年时期,记忆力开始衰退。

如果有两个以上的变量,可以用相关矩阵来说明相关。如下例,矩阵中有4个变量,对应每一对变量都有一个系数,这个矩阵中有6个相关系数。

 

  收入 教育 态度 选举
输入 1.000 0.574 -0.080 -0.291
教育 0.574 1.000 -0.149 -0.199
态度 -0.080 -0.149 1.000 -0.169
选举 -0.291 -0.199 -0.169 1.000
决定系数:相关系数的平方。决定系数(coefficient of determination)的计算是为了确定一个变量的方差可以被另一个变量的方差解释的程度。 例如平均成绩和学习时间之间的相关系数是0.7,那么决定系数是0.49,即平均成绩方差的49%可以被学习时间的方差解释。不能解释的方差系数就是不相关系数(也叫做非决定系数)。

六、理解信度和效度

依赖变量(dependent variable)

独立变量(independentvariable)

测量尺度(scales of measurement)的四种类型:定类、定序、定距和定比。

定类测量水平(nominal level of measurement),如性别(男和女)、政党等。

定序测量水平(ordinal level of measurement),表示次序,如文化程度用大学、中学、小学区分。

定距测量水平(interval level of measurement),除了能表示次序外,定距尺度的一个显著特征是尺度上的每个间距都相等。

定比测量水平(ratio level of measurement),有固定起点的定距测量,如绝对零度。

1. 信度

信度(reliability),指一个测试或者你使用的其他任何测量工具对事物的测量可以保持一致性。观察值=真实值+误差值,误差越小越可信。信度的不同类型,1)再测信度(一个测试在不同时间是否可信,两次测试值之间的相关系数),2)复本信度(一个测试的几个复本是否可信或者是否是等价,两个复本之间的相关系数),3)内在一致性信度(每个项目的得分与总得分之间的相关系数), 4) 评分者信度(对一个观察结果的评价是否一致性,检验不同评分者一致结论的百分比)

实例1,再测信度,两次测试的得分如下表,计算相关系数。

 

测试者编号时期1得分时期2得分
1 54 56
2 67 77
3 67 87
4 83 89
5 87 89
6 89 90
7 84 87
8 90 92
9 98 99
10 65 76

 

import scipy.stats.stats as stats
s1=[54,67,67,83,87,89,84,90,98,65]
s2=[56,77,87,89,89,90,87,92,99,76]
r=stats.pearsonr(s1,s2)[0]
print r

0.900579196775

 

实例2,复本信度,自主记忆测试的复本A和复本B的得分(相隔了两天)

 

编号复本A得分复本B得分
1 4 5
2 5 6
3 3 5
4 6 6
5 7 7
6 5 6
7 6 7
8 4 8
9 4 7
10 3 7
a=[4,5,3,6,7,5,6,4,3,3]
b=[5,6,5,6,7,6,7,8,7,7]
r=stats.pearsonr(a,b)[0]
print r

0.128697890418

实例3 ,一致性信度,计算克隆巴赫系数(Cronbach's),计算公式为(实际上计算单项得分与总分直接的相关系数,并与每个单项得分的变异性比较)

10个被测者,5个项目的得分表

 

编号项目1项目2项目3项目4项目5
1 3 5 1 4 1
2 4 4 3 5 3
3 3 4 4 4 4
4 3 3 5 2 1
5 3 4 5 4 3
6 4 5 5 3 2
7 2 5 5 3 4
8 3 4 4 2 4
9 3 5 4 4 3
10 3 3 2 3 2

python代码,引入了pandas包,应用pandas的DataFrame计算就变得简单了,其中sum()是求和,var()是求方差

 

import numpy as np
import pandas as pd 
import scipy.stats.stats as stats
import math
score=[
       [3,5,1,4,1],
       [4,4,3,5,3],
       [3,4,4,4,4],
       [3,3,5,2,1],
       [3,4,5,4,3],
       [4,5,5,3,2],
       [2,5,5,3,4],
       [3,4,4,2,4],
       [3,5,4,4,3],
       [3,3,2,3,2]]
df = pd.DataFrame(score)
total_row = df.sum(axis=1)
#print total_row
sy = total_row.var()
print sy 
var_column =  df.var()
si = var_column.sum()
print si 
r = (5.0/4.0)*((sy-si)/sy)
print round(r,2)
输出

 

 

6.4
5.17777777778
0.24

 

2. 效度

 

效度(validity),就是表示工具能够测量要测量的内容的性质/程度。效度类型,1)内容效度(一个特定主题的项目样本是否能够反映项目总体),2)准则效度(测试成绩是否和其他标准系统相关),3)建构效度(测试是否测量一些基本的心理结构,如参与身体接触和危险运动的男性的侵略性TEST测试的得分比较高)。

 

 

 

posted @ 2018-10-11 09:32  pupilheart  阅读(1519)  评论(0)    收藏  举报
小强带你挣小钱v:zln88896

公告

点击 更新中