回顾
上期通过举例研究如何找到公共因子组合,并计算载荷矩阵。
注意: 特征值>1. or 累计贡献>75%(经验),此时组合偏有效
代码
本期延伸该例子,进行因子评分
import pandas as pd
from factor_analyzer import FactorAnalyzer
## already done before
df = pd.read_csv("bfi.csv")
df.drop(['Unnamed: 0', 'gender', 'education', 'age'], axis=1, inplace=True)
df.dropna(inplace=True)
fa = FactorAnalyzer(5, rotation="varimax")
fa.fit(df)
# 将各因子得分中间值相加,得到综合得分
var = fa.get_factor_variance() # 计算累计贡献
a = pd.DataFrame(fa.transform(df) * var[1] / var[-1][-1]) # 转化为因子评分
a['score'] = a.apply(lambda x: x.sum(), axis=1)
a.sort_values("score", inplace=True, ascending=False)
print(a.head())
分析
B=fa.transform(df)=R-1A,指的是经过旋转后的得分矩阵,其中A为旋转后的载荷矩阵,R为相关系数矩阵,具体计算过程python已经完成,那么如何计算每个截面的得分?则以累计贡献为加权,最后再排名
var = fa.get_factor_variance() # 计算累计贡献
a = pd.DataFrame(fa.transform(df) * var[1] / var[-1][-1]) # 转化为因子评分
结果
总结
本期实现多因子组合筛选后的综合评价
期待
- 评分方式还有什么?rankIC是什么?
- 数据源如何处理?
- 因子如何搭建?因子是升序还是降序,还是需要事先剔除
- 显然上期提到只能解释42%,效果不佳,如何改进?
如果您看到这篇文章有收获或者有不同的意见,欢迎点赞或者评论。
群:984328985
丁。