2016-01-26 119 views
0

我查到了类似的问题,我无法找到答案。使用统计模型中的OLS进行多元回归

我的目标:我有生存数据。在计算年龄和体重后,我想要生存数据的残差。

方法:

import statsmodels 
from statsmodels import ols 
species = ["sample1","sample2","sample3","sample4","sample5"] 
Survival = [0.1,0.2,0.3,0.4,0.5] 
Age = [1,2,3,4,5] 
Weight = [1,3,5.5,7,10] 
mymodel = ols.ols(Mortality,[Weight,Age],"Mortality",["Weight","Age"]) 
print mymodel 

输出: 我的理想的输出是一个表,有两列,一列是该物种,另一列是死亡率残余我已经占了后,年龄和体重。

问题: 1.无论我做什么,我都找不到ols方法。我已安装statsmodel。当我打开一个python控制台并执行dir(statsmodels)时,出现了以下选项:

['CacheWriteWarning', 'ConvergenceWarning', 'InvalidTestWarning', 'IterationLimitWarning', 'NoseWrapper', 'Tester', '__builtins__', '__doc__', '__docformat__', '__file__', '__name__', '__package__', '__path__', '__version__', 'compat', 'datasets', 'distributions', 'errstate', 'print_function', 'simplefilter', 'test', 'tools', 'version'] 

ols方法在哪里?

  1. 希望一旦我真的能够找到方法,我就可以运行代码并询问我在哪里可以找到我正在寻找的残差。

感谢

+0

尝试'导入statsmodels.api为sm'和'sm.OLS(y,X).fit()'。它工作吗? – Kikohs

回答

0

谢谢你,这工作。

这里是我使用的代码:

import numpy as np 
import statsmodels.api as sm 
import statsmodels.formula.api as smf 
import sys 

dat = np.loadtxt(sys.argv[1],dtype={"names":("Species","Weight","Mortality","Age"),"formats":("S20","f4","f4","f4")}) 
mymodel = smf.ols("Mortality~Weight+Age",data=dat).fit() 
Residues = list(mymodel.resid_pearson) 
for each_species,each_residue in zip(list(dat["Species"]),Residues): 
    print each_species + "\t" + str(each_residue) 

所以我想/希望这里发生了什么是我在读表,多元回归拟合数据,并打印物种名称和每个物种的残留量(残留量是死亡率与体重和年龄的倒数)。谢谢。

+0

'resid_pearson'是方差标准化的残差。如果你想要纯粹的残差,那么正确的属性就是'resid'。 – user333700