在Python中随着时间的推移ANOVA,我在做什么?

我真的很喜欢统计数据,但是已经超过6年了。我无法确定我需要什么样的测试,以及用于这些问题的最好的numpy / scipy / R函数。 我有一个访问者及其相应属性的表格(例如“Browser = Mozilla,Referrer = Google”),以及每位访问者的变量值(例如5美元),随着时间的推移分组为数据点。 我的目标是: A)找到最重要的财产家庭,得分为“家庭有多重要” 我想绘制的结论示例*:
Referrer has 10x larger effect size upon value-per-visitor than Browser
=> PropertyFamily('browser').significance = 1
=> PropertyFamily('referrer').significance = 10
和 B)找出具有显着性分数的家庭中最重要的属性。 我想得出的结论的样本:
GIVEN THAT Value:Baseline => $5/hit
5 hits from IE @ $5/hit (equal to baseline) => no significance
1 hit from Netscape @ $0 => little significance (not enough data)
10 hits from FF @ $10/hit => HIGH significance (hits and delta_value both high)
我的问题是: 1)是否有numpy / scipy / R功能让我的生活变得轻松? 2)任何了解ANOVA(方差分析)和ANOVA-over-time的人都可以提供反馈吗?我不是肯定的,我甚至做得对,并且可能会遗漏一些简单的事情。确认或更正确认或更正。 请注意,这些是过去30天内的(打击,值,天)的阵列。例如,如果星期一的Value-Of-Mozilla有一个很大的峰值(相对于基线),而周二的Mozilla价值有一个下降(低于基线),我希望Mozilla显示为“重要”属性(而不是相互抵消的峰值/跌落) 在map / reduction之前输入数据的示例:
data = {
'baseline': [(hits, value, day) for hits, value, day in last_thirty_days('baseline')],
'browser': {
  'mozilla': [(hits, value, day) for hits, value, day in last_thirty_days('browser', 'mozilla')],
  ... etc ...
  }
}
... etc ...
这是我目前的代码 - 它在Dumbo / Hadoop上运行,并提供了一个“重要性”的数字,我基本上发明了这个公式。虽然我的公式有效,并且提供有意义的数据,但我的“重要性”值没有很好地定义(“重要”属性通常会得分> = 100,但这会随着数据集的大小而变化)我知道这可能是一个“真正的公式”。
# Runs after each (hits, value, date) tuple has been grouped
# into corresponding "plot points", as they would appear on a graph
pp = PlotPoint(property, date, hits, value)
pp.epc = float(pp.value/pp.hits) if pp.hits else 0

# Finds PlotPoint('baseline', date)
# if pp = PlotPoint('firefox', '1-1-10')
#  then pp.baseline == PlotPoint('baseline', '1-1-10')
baseline = pp.baseline()
if baseline.hits == 0:
    volume_ratio = 0 
else:
    volume_ratio = round(100*pp.hits/baseline.hits)
value_ratio = baseline.epc - pp.epc

# Make up a significance value --
# e.g. (10% of visitors * ($1 delta from baseline))^2
pp.significance = math.sqrt(volume_ratio * value_ratio **2)

# OK, we have values for each plotpoint, now sum them up
# to get values for the whole property (over a 30day period) 
pps = property.plotpoint_set.all()
property.hits = sum([p.hits for p in pps])
property.value = sum([p.value for p in pps])
property.epc = property.value/property.hits
value_delta = baseline.epc - property.epc

# Make up a significance for the Property, based on each point's significance
property.significance = math.log(sum(
                [sss.significance**2 for sss in pps]
                )*abs(value_delta)+1)
提前致谢!     
已邀请:
AFAIK,numpy / scipy中的统计测试是相当基础的。您可能希望研究R,这是一种或多或少专用于统计的语言,并且具有许多可用的高级功能。 另外,我不认为MANOVA真的是你想要做的。 MANOVA适用于多个相互作用的因变量。这实际上只是一个方差分析。 你可以在R做什么的例子:
bybrowser = lm(value ~ browser, data=visitors)
anova(bybrowser)
byreferrer = lm(value ~ referrer, data=visitors)
anova(byreferrer)
byreferrerandbrowser = lm(value ~ browser * referrer, data=visitors)
anova(byreferrerandbrowser)
请注意,这一切都假设您的值是正态分布的。你应该检查这个假设(
hist(visitors$value)
是一个好的开始。)。如果它们不是,要么找到规范化它们的方法(尝试记录日志),要么使用适当的非参数测试。 哦,最后,如果你想获得有关统计数据的建议,那么有一个专门用于此的姐妹网站:https://stats.stackexchange.com/     

要回复问题请先登录注册