我试图将代码从Stata翻译成Python
Stata中的原始代码:
by year, sort : summarize age [aweight = wt]
通常一个简单的describe()
函数就可以了
dataframe.groupby("year")["age"].describe()
但我找不到将aweight
选项翻译成python语言的方法,即在分析/方差加权下给出数据集的描述性统计数据
用python生成数据集的代码:
dataframe = {'year': [2016,2016,2020, 2020], 'age': [41,65, 35,28], 'wt':[ 1.2, 0.7,0.8,1.5]}
如果我在stata上运行by year, sort : summarize age [aweight = wt]
结果是:平均值=49.842,标准差=16.37
我应该怎么做才能在Python中获得相同的结果
因此,我编写了一个函数,它执行与
describe
相同的操作,只是接受了一个权重参数。我在您提供的小数据框上进行了测试,但没有详细介绍。我试着不使用.apply
以防您有一个大的数据帧,尽管我没有运行基准点来查看我的方法是否比编写一个函数来为每个by
组进行加权描述,然后使用apply
将其应用于数据帧中的每个by
组更快/更少的内存占用。这可能是最简单的计数、最小值和最大值可不考虑加权。然后,我对无偏方差公式进行了简单的加权平均值和标准偏差。我包括了一个频率加权选项,它应该只影响用于调整方差的无偏估计量的样本大小。频率权重应使用权重之和作为样本大小,否则,使用数据中的计数。我使用this answer来帮助获得加权百分位数
然后我定义下面的函数
并进行测试
将其与不带权重的输出进行比较
相关问题 更多 >
编程相关推荐