变量的筛选和描述统计

  1. 因子分析

因子分析法,其实质不是对数据进行数学变换,而是对于具有复杂相关关系的原始指标x1 x2···(P个),通过寻找原始变量的共同方面来简化存在于原始变量之间的复杂关系,把各个测量本质相同的变量归入一个因子(公因子),这些公因子对原始变量起着重要的支配作用,公因子之间不相关,往往不可测,个数比原始变量个数少比如m个,是所有变量的共同具有的公共因素。即把原始评价指标化为m个公因子(综合指标),形成优化的指标体系。

正太分布的检验:
1 . Shapiro-Wilk检验只适用于小样本场合(3≤n≤50)
stats.shapiro(data)
X = ss.norm(0.1,3)
x_sample=X.rvs(10)
print(ss.shapiro(x_sample))
print(ss.normaltest(x_sample))
print(lillifors(x_sample))
print(ss.kstest(x_sample,‘norm’))

out:
(0.9038400053977966, 0.2412981241941452)
NormaltestResult(statistic=1.2055567870541868, pvalue=0.5472889377039196)
(0.18485067195130384, 0.2)
KstestResult(statistic=0.40882179882390696, pvalue=0.050385763915268056)

  1. 20<样本数<50用normaltest算法检验正态分布性
    x_sample=X.rvs(40)
    print(ss.shapiro(x_sample))
    print(ss.normaltest(x_sample))
    print(lillifors(x_sample))
    print(ss.kstest(x_sample,‘norm’))
    stats.norm(data)

out:
(0.9814156293869019, 0.7418537735939026)
NormaltestResult(statistic=0.6389568338694439, pvalue=0.7265278829054929)
(0.10413829003266162, 0.2)
KstestResult(statistic=0.31463682457444525, pvalue=0.0005106744892731108)
3样本容量在【50,300】之间用lillifors
from statsmodels.stats.diagnostic import lillifors
x_sample=X.rvs(100)
print(ss.shapiro(x_sample))
print(ss.normaltest(x_sample))
print(lillifors(x_sample))
print(ss.kstest(x_sample,‘norm’))

out:
(0.9814156293869019, 0.7418537735939026)
NormaltestResult(statistic=0.6389568338694439, pvalue=0.7265278829054929)
(0.10413829003266162, 0.2)
KstestResult(statistic=0.31463682457444525, pvalue=0.0005106744892731108)
4 样本容量>300时候用KStest()
X= ss.norm(0.1,4)
x_sample=X.rvs(330)
print(ss.shapiro(x_sample))
print(ss.normaltest(x_sample))
print(lillifors(x_sample))
print(ss.kstest(x_sample,‘norm’,(0.1,4)))
print(ss.anderson(x_sample,dist=‘norm’))

out:
(0.9954125285148621, 0.4421331286430359)
NormaltestResult(statistic=0.4175156267354325, pvalue=0.8115917685208401)
(0.028580693044381433, 0.2)
KstestResult(statistic=0.04981302772324858, pvalue=0.37622873314529315)
AndersonResult(statistic=0.2778703332622854, critical_values=array([0.569, 0.648, 0.778, 0.907, 1.079]), significance_level=array([15. , 10. , 5. , 2.5, 1. ]))

  1. 当数据不满足正太分布时候B0x-Cox转换

https://blog.csdn.net/sinat_26917383/article/details/77864582

**

  • 正文:因子分析法

**
想要数据可以联系小编!

  • 1 数据预处理
  • 数据展示:

-import pandas as pd
#from sklearn.decomposition import FactorAnalysis
from sklearn.preprocessing import StandardScaler
from factor_analyzer import FactorAnalyzer
import seaborn as sns
import scipy.stats as ss
import numpy as np
data = pd.read_csv(‘data.csv’,index_col=0,encoding=‘utf-8’)
columns = [‘国有经济’,“集体经济单位”,“联合经济”, “股份制经济单位”, “外商业投资经济”, “港澳经济单位”,
“其他经济单位”]
data.loc[u’西藏’,‘x6’]=0
data.loc[u’青海’,‘x7’]=0
#中位数填充
data[‘x6’] = data[‘x6’].apply(lambda x:int(x))
data[‘x7’] = data[‘x7’].apply(lambda x:int(x))
data.loc[u’西藏’,‘x6’]=np.median(data[‘x6’])
data.loc[u’青海’,‘x7’]=np.median(data[‘x7’])
#data[‘x7’]
data.head()

分析数据是否有异常值(箱子上来)

sns.boxplot(np.sqrt(data.values[:,6]))
处理前的图:处理后的箱图:
直观看出是有异常值的;由于分析过程不符合正态分布,本文做了一下处理sqrt,似乎也不太好
正态分析:
for i in range(data.shape[1]):
print(ss.shapiro(np.log(data.values[:,i])))
print(ss.shapiro(data.values[:,i]))
print()

out:
(0.8478094935417175, 0.000455189379863441)
(0.797980546951294, 4.736970367957838e-05)

(0.9390956163406372, 0.07790136337280273)
(0.8727619051933289, 0.001610458712093532)

(0.9747883677482605, 0.6584002375602722)
(0.9111603498458862, 0.013848968781530857)

(0.9485302567481995, 0.14217382669448853)
(0.8903700113296509, 0.00417946046218276)

(0.9200542569160461, 0.02368474379181862)
(0.8051450848579407, 6.436666444642469e-05)

(0.9336402416229248, 0.05512480065226555)
(0.8290368914604187, 0.0001869533007266)

(0.9117269515991211, 0.014324542135000229)
(0.5315316915512085, 8.19287038211769e-09)
第一个不符合正态分布,最后一个也不符合,因为有异常值嘛!

标准化(本次标不标准似乎没有影响,但建议标准化)

检测是否适合做因子分析

1 指标1:

#Bartlett’s球形检验
from scipy.stats import bartlett
data_corr = data.corr() #np.corrcoef(data.values.T)
bartlett(data[‘x1’],data[‘x2’],data[‘x3’],data[‘x4’],data[‘x5’],data[‘x6’],data[‘x7’])

out
BartlettResult(statistic=97.76988654283352, pvalue=7.321875564618151e-19)
p值近似于零,符合。

KMO检验

import math
data_corr = data.corr()
def kmo(dataset_corr):
corr_inv = np.linalg.inv(dataset_corr)
nrow_inv_corr, ncol_inv_corr = dataset_corr.shape
A = np.ones((nrow_inv_corr,ncol_inv_corr))
for i in range(0,nrow_inv_corr,1):
for j in range(i,ncol_inv_corr,1):
A[i,j] = -(corr_inv[i,j])/(math.sqrt(corr_inv[i,i]*corr_inv[j,j]))
A[j,i] = A[i,j]
dataset_corr = np.asarray(dataset_corr)
kmo_num = np.sum(np.square(dataset_corr)) - np.sum(np.square(np.diagonal(A)))
kmo_denom = kmo_num + np.sum(np.square(A)) - np.sum(np.square(np.diagonal(A)))
kmo_value = kmo_num / kmo_denom
return kmo_value
print(kmo(data_corr))
#0.87适合做

fa = FactorAnalyzer()
fa.analyze(data=data,n_factors=2,rotation=‘varimax’)
fa.get_communalities()
#公因子共性

var = fa.get_factor_variance()
zhi
只能解释76%,应该是3个,

#成分矩阵
fa.loadings

得分:
score = fa.get_scores(data)
总得分:
得分
#score=( fac1 * fac1贡献率 + fac2 * fac2贡献率 + … + fac5 * fac5贡献率)/ 所有因子的累计贡献率
a = (score*var.values[1])/var.values[-1][-1]
a.head()

Full_score = a.sum(axis=1)
Full_score

正态分布的检验使用场景,以及 因子分析相关推荐

  1. R语言:多元正态分布的检验

    多元正态分布的检验 多元正态分布 mshapiro.test {mvnormtest} mvn {MVN} 多元正态分布 转自个人微信公众号[Memo_Cleon]的统计学习笔记:多元正态分布检验的R ...

  2. matlab 偏度峰度检验,正态分布数据检验-偏度峰度检验法

    正态分布数据检验-偏度峰度检验法 正态数据偏度峰度检验法 置信度:1-alpha 数据样本数:n sig1=sqrt(6.0*(n-2)/(n+1)/(n+3)); sig2=sqrt(24.0*n* ...

  3. R语言实战应用精讲50篇(九)-正态分布的检验

    前言 关于Excel数据指标分析,已经上传到个人资源,以下是链接,需要的小伙伴可自取. Excel数据分析工具库(t检验.Z检验.方差分析.回归.协方差.相关系数.双样本方差分析) https://d ...

  4. 正态分布的检验——JB检验

    定义 我们可以用Jarque-Bera 统计量(JB统计量)检验某一样本统计量的峰度和偏度是否与正态分布相同. 假设: H0H_0H0​: S = 0 且 K = 3 H1H_1H1​: S ≠\ne ...

  5. 统计基础:1.1_正态分布及其检验

    Normal distribution 一.正态分布(Normal distribution)的基本原理 二.正态分布检验(Test of Normality) 2.1.正态分布直方图.核密度图.P- ...

  6. python编写一个简单的程序、验证数据是否符合正态分布_Python检验数据是否正态分布...

    判断数据是否符合正态分布,比如使用3-sigma判断数据异常前,首先需要确定的是数据是否符合正态分布.今天一起梳理下检测正态分布的方法. Shapiro-Wilk test Shapiro-Wilk ...

  7. 正态分布离群值检验——偏度与峰度方法

    文章目录 偏度检验法--用于单侧检验 Python 实现 峰度检验法--用于双侧检验 Python 实现 本文主要参考 GB/T 4883-2008 的 8.2.2 和 8.2.3 条款. 记样本为 ...

  8. 股票收益率正态分布性检验

    ##导入数据 data2 = pd.read_csv ('data2.csv', encoding='gbk', index_col='Dates') data2.index=[dt.datetime ...

  9. webdriver模仿ie_使IE8模仿IE7

    webdriver模仿ie As you probably know, Microsoft Internet Explorer 8 was "officially" release ...

最新文章

  1. iOS开发之--解决 swap file “*.swp”already exists!问题
  2. 【Android 逆向】整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmContinueOptimizati() 函数分析 )
  3. luatex plain 从零构建
  4. 从 Spark Streaming 到 Apache Flink : 实时数据流在爱奇艺的演进
  5. Windows 8.1 build 9369 简单安装测试了一下
  6. 如何在 Windows 2000 中安装 Microsoft 环回适配器
  7. Ubuntu18.04安装BeyondCompare
  8. ORB-SLAM2-建立双目稠密点云(一)
  9. wpf 引用的图片文件打包后找不到_PyQT5打包:用PyInstaller遇到的坑
  10. python中字符a如何变成b_python 如何把'a=b'这样的字符解析成dict类型
  11. 金融业大数据应用场景
  12. 如何改变iTunes默认备份文件目录
  13. Tarjan的缩点割点概述
  14. Vue 监听刷新 切屏
  15. 计算机术语access,计算机英语词汇术语:access(存取,访问)
  16. 最新技术栈Vue3+TS基于唯杰地图开发的CAD云端图纸管理平台案例代码开源了
  17. startup_stm32f10x_hd.S:1: Error: junk at end of line, first unrecognized character is `*‘
  18. word中删除脚注中的横线
  19. 解决Incorrect string value: '\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA...' for column 'VARIABLE_V
  20. Pytorch CIFAR10图像分类 LeNet5篇

热门文章

  1. 实验二 多路复用器与加法器的实现
  2. C# ——SaveFileDialog
  3. “三白汤”让你又白又嫩(图)
  4. 2020年来了,80后、90后扎心图鉴
  5. DaSiamRPN测试程序分析
  6. 华为机试题解析012:字符串反转(python)
  7. 如何判断对象可被GC回收?
  8. phpstorm软件安装
  9. 红帽8.5---yum源安装与配置
  10. 用PS制作小清新文字图片的方法