我真的很喜欢统计学,但已经六年多没上过一门课了。我很难弄清楚我在这里需要什么样的测试,以及在这类问题上使用的最好的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)在这里是否有使我的生活容易的功能?
( 2)对方差分析( ANOVA )和方差分析(ANOVA)了解得多一点的人能否提供反馈?--我甚至不肯定我做的是正确的,而且可能遗漏了一些简单的东西。确认或更正均为感激。
请注意,这些是过去30天中的数组(命中、值、天)。例如,如果周一的Mozilla值有一个大的峰值(相对于基线),周二的Mozilla值下降(低于基线),我希望Mozilla显示为一个“重要的”属性(而不是互相取消的峰值/下降)。
在地图/还原之前,我输入的数据示例:
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)提前感谢!
发布于 2011-01-09 18:29:09
AFAIK,numpy/scipy中可用的统计测试是相当基本的。您可能想了解R,一种或多或少致力于统计的语言,它具有许多可用的高级功能。
而且,我不认为马诺瓦真的是你想做的。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/
https://stackoverflow.com/questions/4640798
复制相似问题