读书笔记数据科学入门————统计学

来源:互联网 发布:木马盗号软件 编辑:程序博客网 时间:2024/06/06 16:29

本章摘要:

   统计学是我们赖以理解数据的数学和技术。


数据集的描述:

  凭借口碑与运气,融资部门的副总如果问你的成员有多少朋友的时候,来确定他潜在的演说对象。

当然很容易生成这个数据,但是如何描述这个数据集合呢?

对于数据集合,最简单的描述方法就是描述数据本身

num_friends = [100,49,41,40,25]

对于足够小的数据集,这甚至可以说是最好的描述方法。但随着数据规模变大,那么就很笨拙了。

如何进行提升呢?我们可以用统计来提炼和表达数据的相关特征。

friend_counter = Counter(num_friends)
>>> friend_counter
Counter({33: 1, 100: 1, 40: 1, 41: 1, 49: 1, 21: 1, 55: 1, 25: 1, 31: 1})

>>> plt.bar(xs,ys)
<Container object of 101 artists>
>>> plt.axis([0,101,0,25])
[0, 101, 0, 25]
>>> plt.xlabel('num of friends')
<matplotlib.text.Text object at 0x04D949D0>
>>> plt.ylabel('num of people')
<matplotlib.text.Text object at 0x04DAB990>
>>> plt.show()

可以获得关于朋友数量的直方图,但是很难进行交流那么需要提炼重要的统计量。

可能对最值感兴趣 max min,

也可能对特定位置的值感兴起,sorted_value = sorted(num_friends)

sorted_value[0] sorted_value[1],sorted_value[-2]


中心倾向

我们常常需要了解的是数据中心位置的一些概念,常用的方法就是用均值的方法进行计算

>>> def mean(x):
return sum(x)/len(x)

如果是两个数据点那么均值就以为这两个点的中间点。锁着数据集点数增加,均值就会移动。取决每个点的取值。

中位数就是数据中心的点值,或者中间两个点平均值

和均值不同的是中位数不依赖于每一个数据的值。例如最大的点进行变化,但是中间的数据点不会变化。中位数不会变化

def median(v):
n = len(v)
sorted_v = sorted(v)
midpoint = n/2
if n%2==1:
return sorted_v[midpoint]
else:
lo = midpoint-1
hi = midpoint
return (sorted_v[lo]+sorted_v[hi])/2


所以计算中位数首先需要对数据进行 排序,中位数不一定随着数据变化。

均值对于数据中异常值非常敏感,而中位数不敏感,如果异常值属于不良数据,那么均值会误导我们。

中位数还有个泛化的概念是分位数,表示的是数据中特定百分比的一个值。中位数表示小于百分之50的数据一个值

def quantile(x,p):
p_index = int(p*len(x))
return sorted(x)[p_index]

quantile(num_friends,0.1)#1

quantile(num_friends,0.25)#3

还有个概念是众数是指出现次数最多的一个数

def mode(x):

   counts = Counter(x) 

  max_count = max(counts.values())

  return [x_i for x_i,count in counts.iteritems() if count==maxcount]



离散度

离散度是数据离散程度度量,如果值是0那么表示数据聚集一起。如果值很大表示离散度很大

最简单是极差 最大和最小元素的差

 def data_range(x):

   return max(x) - min(x)

另外一个度量是方差

def d_mean(x):

  x_bar = mean(x)

 return [x_i - x_bar for x_i in x]

def variance(x):

 n = len(x)

 deviations = de_mean(x)

 return sum_of_squares(deviataions)/(n-1)



相关

为了研究两个度量值之间的关系,引入了相关性的讨论

相关性中首先介绍协方差,和方差是一个对应的词语。方差衡量是单个变量对于均值的偏离程度,而协方差研究的是两个变量对于均值的串联偏离程度。

def covariance(x,y):
n = len(x)
return dot(de_mean(x),de_mean(y))/(n-1)


由于点乘是对应元素相乘以后求和。如果向量x和向量Y对应元素同时大于自身的均值,或者同时小于自身的均值,那么是个正值。

但是协方差单独研究很少,那么我们引入了相关的概念。通过协方差除以两个变量的标准差

def correlation(x,y):
stdev_x = standard_deviation(x)
stdev_y = standard_deviation(y)
if stdev_x>0 and stdev_y>0:
return covariance(x,y)/stdev_x/stdev_y
else:
return 0


辛普森悖论

  是指分析数据的时候可能发生的意外。具体而言,如果忽略的了混杂的变量,相关系数会有误导性。

比如你将所有会员分成南数据科学家以及西数据科学家,验证哪边更加友好。

那么得出更加友好的特征向量可能是阳光,咖啡,农产品。

但是分析数据的时候可能出现错误分析,如果仅仅比较有博士学位的那么这些特征向量确实可以表述,

但是如果没有博士学位的那么就结果相反相关系数就会发生变换。说白了就是忽略了一些关键变量。就是在假设其他条件相同时进行比较时候,可能还存在另外

类型的更深的分配,那么就需要充分了解自己的数据。


上述讨论的相关问题,也可以导致另外一种术语描述,叫做因果,如果强相关那么可能x引起了y或者y引起了x。

那么如何进行验证呢,可以将具有类似的统计数据用户分成2组,对其中一组加上不同的影响因素,然后看是否有不同的结果。

0 0
原创粉丝点击