持续调查分析的设计模式
我正在进行一个持续的调查,每个季度都会进行一次。我们让人们报名参加(在这过程中,他们会提供详细的人口统计信息)。
然后,我们会让他们回答六个简短的问题,每个问题有五个可能的选项:非常差、差、一样、好、非常好。
当然,随着时间的推移,我们不会每次都得到相同的参与者,有些人会退出,也会有新的人加入。所以我在考虑如何最好地建立一个数据库和代码(希望使用Python和Numpy)来方便持续收集和分析这些根据初始人口统计数据定义的不同类别的数据。目前我们大约有700个参与者,所以数据集并不算太大。
也就是说;我们有人口统计信息、用户ID、北方、南方、住宅、商业等信息。然后记录每个参与者在第一季度的六个问题的回答。第二季度也是如此,然后我们需要能够根据不同的人口统计信息来分析和计算每个季度的回答平均值,以便观察趋势。
由于每个季度参与者不同,计算平均值和分组等操作会稍微复杂一些。
有没有什么建议可以帮助我设计这样的数据库和分析方法?这算不算稀疏矩阵?
3 个回答
在分析时,如果你提出的六个问题让你觉得答案之间会有关系,建议你先对原始得分进行因子分析。通常,比较不同地区或客户类型的因子比单纯比较问题之间的答案更有统计意义。而且,因子得分更可能呈现出正常分布(因为它们是六个观察值的加权总和),而单独的六个问题可能不会这样。这让你在比较因子得分时,可以使用基于正常分布的t检验。
不过,有一点需要注意。如果你给答案分配数字值,比如1代表“差很多”,2代表“差一些”,等等,这就意味着“差很多”和“差一些”之间的距离和“差一些”和“一般”之间的距离是一样的。但实际上,这通常不成立——你可能真的需要犯很大的错误才能得到“差很多”的评分,而只是稍微犯错可能就只会得到“差一些”的评分。所以,把数字(数值)分配给顺序(排序)本身就有一定的偏差。
每个季度参与者人数不均也不是问题——有一些统计t检验可以处理样本大小不均的情况。
关于你提到的调查分析部分,我强烈建议你看看R语言中的survey包(里面有很多实用的示例,包括“一个调查分析的例子”)。你可以在这个网页上详细了解它:“R中的调查分析”。特别是,你可能想看看这个页面:基于数据库的调查对象,它讲的是如何处理非常大的调查数据。
如果需要的话,你可以通过RPy2把这个分析整合到Python中。
这是一个数据仓库。虽然小,但确实是一个数据仓库。
你有一个星型模式。
你有一些事实:
- 响应值就是你要测量的数据。
你还有一些维度:
时间段。这有很多属性(比如年、季度、月、日、周等等)。这个维度让你可以无限制地收集调查的响应。
问题。这个维度有一些属性。通常你的问题会归类到不同的类别、产品线、焦点或者其他任何东西。你可以在这个维度中有很多“问题类别”的列。
参与者。每个参与者都有独特的属性,并且与一个人口统计类别相关联。你的人口统计类别可以简单地列出你的人口组合。这个维度让你可以追踪参与者或他们的人口统计类别随时间的变化。
但是,建议你参考Ralph Kimball的《数据仓库工具包》,并遵循那些设计模式。http://www.amazon.com/Data-Warehouse-Toolkit-Complete-Dimensional/dp/0471200247
买这本书。你必须完全理解这些内容,才能避免走上错误的道路。
另外,既然你在做数据仓库,看看Stack Overflow上所有关于[数据仓库]的问题。阅读你能找到的每一个数据仓库相关的博客。
只有一个相关的设计模式——星型模式。如果你理解了这个,你就理解了一切。