美文网首页
方差分析(一元多因素)

方差分析(一元多因素)

作者: 弦好想断 | 来源:发表于2020-05-15 16:58 被阅读0次
当有两个或两个以上的因素对因变量产生影响时,把因素单独对因变量产生的影响称之为‘主效应’;把因素之间共同对因变量产生的影响,或者因素某些水平同时出现时,除了主效应之外的附加影响,称之为‘交互效应’。

因此,多因素方差分析模型也是一个一般化线性模型的延续:

因变量=因素1主效应+因素2主效应+···+因素n主效应 + 因素交互效应1+因素交互效应2+···+因素交互效应m+随机误差

只考虑主效应的方差分析

例:根据样本数据(472个样本)分析各种因素(学历、工作单位、收入水平和户型)对购房面积的影响。设显著性水平a=0.05。
原数据:

转换数值标签后:

在不考虑交互效应的情况下,使用statsmodels中的anova_lm配合ols进行分析:

可以看到edcationt因数主效应对应P值=0.1923和unit因数主效应的P值=0.7347,均非常大,可以得出这两个因素对因变量的影响十分不显著,应当在模型中予以剔除。
说明拟购房面积大小受不同学历和工作单位的影响较小。因此从formula语句中剔除这两个因素。

从结果中可以看到income和type两个因素对拟购面积的影响非常显著。

多重比较检验

购房者收入水平对拟购面积的影响

可以认为,低收入群体和高收入群体对购房面积最敏感,而中收入群体对购房面积敏感性不如高手如何低收入群体。

利用方差分析模型进行参数估计

本例模型的拟合优度0.171偏低,但是对于时机界面数据而言,该模型拟合程度勉强能接受。
如,考察年收入在50000-75000元,购买意向户型为三室二厅的拟购面积为:102.2754-19.4782(平米)

存在交互效应的多因素方差分析

当不确定因素之间是否存在交互效应时,可以首先考虑利用方差分析的群模型进行分析,即考虑主效应和交互效应。
在statsmodels中,“:”表示因素之间的交互效应,“ * ”表示因素之间的全部效应。
即 'space ~ C(income)*C(type)' 等价于 'space ~ C(income)+C(type)+C(income):C(type)'


各因素的主效应与交互效应均非常显著,且模型拟合度为0.269,较无交互效应模型要大。

交互效应图

python代码

import pandas as pd
from scipy import stats
import statsmodels.api as sm
import matplotlib.pyplot as plt
%matplotlib inline 
plt.rcParams['font.sans-serif'] = ['SimHei']#显示中文
plt.style.use('ggplot')

数据预处理

house = pd.read_csv('house.csv')
house['education'] = house['education'].astype('category')
house['education'].cat.categories = ['初中及以下','高中及中专','大学','研究生及以上']
house['education'].cat.set_categories = ['初中及以下','高中及中专','大学','研究生及以上']
house ['unit'] = house['unit'].astype('category')
house['unit'].cat.categories = ['国营企业','行政事业单位','大专院校科研单位','私营企业','失业','其他']
house['unit'].cat.set_categories = ['国营企业','行政事业单位','大专院校科研单位','私营企业','失业','其他']

house['income'] = house['income'].astype('category')
house['income'].cat.categories = ['10000元以下','10000元-25000元','25000-50000元','50000元-75000元','75000元以上']
house['income'].cat.set_categories = ['10000元以下','10000元-25000元','25000-50000元','50000元-75000元','75000元以上']

house['type'] = house['type'].astype('category')
house['type'].cat.categories = ['一室一厅','二室一厅','二室二厅','三室一厅','三室二厅','三室三厅','四室二厅一卫','四室二厅二卫',
                                '四室三厅一卫','四室三厅二卫','更大户型']
house['type'].cat.set_categories = ['一室一厅','二室一厅','二室二厅','三室一厅','三室二厅','三室三厅','四室二厅一卫','四室二厅二卫',
                                '四室三厅一卫','四室三厅二卫','更大户型']

只有主效应没有交互效应的情况下

#
from statsmodels.formula.api import ols
formula = 'space ~ C(education)+C(unit)+C(income)+C(type)'
house_anova = sm.stats.anova_lm(ols(formula,data = house).fit(),typ = 3)
house_anova
#由于edcation和unit因数主效应的影响十分不显著,所以从formula语句中剔除这两个因素
formula = 'space ~ C(income)+C(type)'
house_anova = sm.stats.anova_lm(ols(formula,data = house).fit(),typ = 3)
#此处typ=3表示做方差分析type iii型检验,
#type iii即平方和分解法,适用于平衡和非平衡的ANOVA模型,凡是用于type ii和type i的模型均可使用该法。
#该参数默认使用type i型。
house_anova

对因素进行多重比较检验

from statsmodels.stats.multicomp import pairwise_tukeyhsd
house_anova_post = pairwise_tukeyhsd(house['space'],house['income'],alpha = 0.05)
house_anova_post.summary()
house_anova_post = pairwise_tukeyhsd(house['space'],house['type'],alpha = 0.05)
house_anova_post.summary()

利用方差分析模型进行参数估计

house_anova_est = ols(formula,data = house).fit()
house_anova_est.summary2()
house_anova_est = ols('space ~ C(income)+C(type)-1',data = house).fit()
house_anova_est.summary2()

考察存在交互效应时的方差分析

formula = 'space ~ C(income)*C(type)'
house_anova_inter = sm.stats.anova_lm(ols(formula,data = house).fit())
house_anova_inter

拟合优度系数

ols(formula,data = house).fit().rsquared
0.26907101524187094

画交互效应图

from statsmodels.graphics.api import interaction_plot
import numpy as np
plt.figure(figsize=(12,6))
fig = interaction_plot(np.array(house['income']),np.array(house['type']),np.array(house['space']),ax=plt.gca())
fig_adj = plt.subplot(111)
plt.legend(prop={'family':'SimHei','size':10.5},loc='upper left',frameon=False)
fig_adj.set_xticklabels(house['income'].unique())

相关文章

  • 方差分析(一元多因素)

    当有两个或两个以上的因素对因变量产生影响时,把因素单独对因变量产生的影响称之为‘主效应’;把因素之间共同对因变量产...

  • 方差分析

    方差分析用于两个及两个以上样本均值差别的显著性检验,方差分析分为单因素方差分析和多因素方差分析。在进行方差分析时,...

  • 微生物组学差异性检验

    1. Adonis vegan包置换多因素方差分析(非参数多因素方差分析),可对OTU矩阵及所有环境因子矩阵进行差...

  • 【Excel系列】Excel数据分析:方差分析

    单因素方差分析 12.1 单因素方差分析基本理论 (1)单因素方差分析的概念 单因素方差分析,是指对单因素试验结果...

  • ggplot2优雅的创建字母显著性标记图

    本节来介绍如何使用R做单因素与多因素方差分析,并添加显著性字母标记,下面通过2个小栗子来进行展示 单因素方差分析 ...

  • 多因素方差分析

    多因素方差分析用来研究两个及两个以上控制变量是否对观测变量产生显著影响。 案例 假设有这样的一些消费者样本,数据量...

  • 两因素~~多因素方差分析

  • 2021-06-19 单因素协方差分析(ANCOVA)在R中实现

    单因素协方差分析(ANCOVA)。当方差分析中存在协变量时,即可称为协方差分析。其中单因素协方差分析是最常见的,在...

  • 方差分析(一元单因素)

    利用样本数据检验两个或两个以上总体均值是否存在差异。 本例根据给定数据的三个指标:市场,像素,销量,研究像素大小是...

  • R语言学习-单因素协方差分析

    单因素协方差分析 单因素协方差分析扩展了单因素方差分析,包含一个或多个定量的协变量。示例数据来源于multcomp...

网友评论

      本文标题:方差分析(一元多因素)

      本文链接:https://www.haomeiwen.com/subject/bnpcohtx.html