我是一名研究动物行为的研究员,我试图找出最好的方法来构造我的数据。我向动物们呈现简短的音乐曲调,并记录他们的反应。
数据
每个曲调包括1-10个音符,从大调+小音阶中随机选取,跨越几个八度音阶.每个音符在一个固定的时间内播放,但在一些短时间窗口内随机播放。
然后,我记录动物对曲调的二进制反应(喜欢/不喜欢)。
我每天给这只动物演奏超过500首曲子,持续了300天。我还组合了来自>10只动物的数据。
我还需要存储变量,比如每天的试用编号(这是第一首曲子吗?)最后的?以及日期,以便我知道由于外部问题(例如,动物在100次试验后或一整天后停止反应)需要排除哪些数据点。
分析
我试图揭示在这些随机产生的曲调中,什么样的音乐结构会导致动物的好恶。我在之前的研究基础上,以一种假设驱动的方式来做这件事。我需要在我的数据集上执行的查询是这样的:“有更多的来自同一个八度音阶的音符会增加歌曲的讨人喜欢吗?”
随着数据的积累,我也在全年对数据集进行分析。
我试过什么
我把来自所有动物的数据合并成一个巨大的列表,其中包含了数据集。每个dict代表一个单一的审判及其相关的:
{'1A#':[30,100]}指的是一个只有一个音符的曲调,从第一个八度的A#,从30 to到100 to。我把这个保存到一个泡菜文件里。每天做完所有的动物之后,我会更新泡菜文件。通过加载更新的泡菜文件,我大约每周运行一次数据分析。
我一直在寻找将我的数据重新构造成数据库或Pandas DataFrame格式,因为1)序列化数据和2)查询的速度,以及3)可能更干净的代码,而不是处理嵌套的dicts。我最初认为,由于我的实验的试用结构,我的数据自然可以很好地用于某种表格结构。不幸的是,表中曲目的定义似乎很棘手,因为这些曲目实际上没有固定的结构。
在构造我的数据时,有什么可能的替代方案?
发布于 2017-01-31 22:52:30
我认为问题的难点在于,您可能希望对不同查询的刺激(调优)数据进行不同的格式化。我想做的是为你的刺激(调音)制作一个相对简单的数据结构,并在每个唯一的曲调中添加一个唯一的标识符。如果您的结构适合内存,您可能可以在这里使用字典结构。
然后,我会将您的试验放入具有相应刺激ID的关系数据库中。数据库中的每个试用条目都将包含完整的主题和会话信息。
对于每个分析排列,您将执行两个步骤来获得相关数据:
我希望这能帮上忙
发布于 2017-01-31 22:28:14
我将使用一个具有JSON支持的关系数据库,例如postgresql。这样,您就可以将调子存储为JSON对象,而不必担心调的结构。数据模型的其余部分似乎是关系型的。我会为动物制作一张桌子,然后为试验/会议准备一张桌子。所以您的会话表可能看起来像
SessionId (integer, primary key) | TrialId (integer) | AnimalId (integer, foreign key) | tune (json) | response (bool)https://stackoverflow.com/questions/41967226
复制相似问题