Python实现双因素方法分析(Two-Way)

  导入包

  import numpy as np

  import pandas as pd

  import statsmodels.api as sm

  from statsmodels.formula.api import ols

  导入数据

  #create data

  df = pd.DataFrame({'water': np.repeat(['daily', 'weekly'], 15),

  'sun': np.tile(np.repeat(['low', 'med', 'high'], 5), 2),

  'height': [6, 6, 6, 5, 6, 5, 5, 6, 4, 5,

  6, 6, 7, 8, 7, 3, 4, 4, 4, 5,

  4, 4, 4, 4, 4, 5, 6, 6, 7, 8]})

  前十行数据

  df[:10]

  water sun height

  0 daily low 6

  1 daily low 6

  2 daily low 6

  3 daily low 5

  4 daily low 6

  5 daily med 5

  6 daily med 5

  7 daily med 6

  8 daily med 4

  9 daily med 5

  实现大连人流医院 http://www.84211111.cn/

  model = ols('height ~ C(water) + C(sun) + C(water):C(sun)', data=df).fit()

  sm.stats.anova_lm(model)

  NOTES

  'height ~ C(water) + C(sun) + C(water):C(sun)' 代表的含义是height作为因变量,water、sun、water和sun的交互效应作为自变量,使用ols建立了线性模型。C()的含义是设置该类为“分类型”的数据(有别于数值型数据,数据型数据不需要加,会报错!),:则是交互效应,与*一致。

  如果需要再增加其他的自变量直接在后面增加即可

  结果

  sum_sq df F PR(>F)

  C(water) 8.533333 1.0 16.0000 0.000527

  C(sun) 24.866667 2.0 23.3125 0.000002

  C(water):C(sun) 2.466667 2.0 2.3125 0.120667

  Residual 12.800000 24.0 NaN NaN

  我们可以看到,水和阳光的p值均小于0.05,因此这两个因素对植物高度在统计学上的有着显著影响。而水和阳光交互效应的p值0.120667 > 0.05,这表明在阳光照射和浇水频率之间没有显著影响。

猜你喜欢

转载自blog.51cto.com/14503791/2656253
今日推荐