OLS回归结果

问题描述 投票:0回答:1

我正在尝试对一个大学项目进行“ OLS回归结果”,而我的代码是这样的:

import statsmodels.api as sm
from statsmodels.formula.api import ols
import numpy as np

data=np.loadtxt('file.txt',skiprows=1)
season=data[:nb,0]
tod=data[:nb,1]
obs=data[:nb,2]
pr=data[:nb,3]

data_lm = ols('pr ~ tod + season',data=data).fit()
table = sm.stats.anova_lm(data_lm, typ=2) 
data_lm.summary()
print(table)

它给我这个错误“ PatsyError:错误评估因子:IndexError:只有整数,切片(:),省略号(...),numpy.newaxis(None)和整数或布尔数组是有效索引 pr〜tod)+季节“

我认为错误在于我的数据格式。文本文件包含4个不同的列(季节,tod,obs和pr)。

季节:[3。,3.,1.,3.,3.,3.,3.,3.,1.,3.,3.,1.,3.,2.,3., 3.,3。 1.,1.,1.,1.,3.,1.,2.,1.,3.,1.,1.,2.,1.,3.,3.,1.,1。 , 1.,2.,3。]

tod:[2。,4.,1.,2.,2.,2.,4.,1.,3.,3.,1.,3.,3.,2.,2., 4.,3。 3.,4.,3.,3.,2.,4.,1.,3.,4.,1.,1.,1.,1.,3.,3.,4.,3.,3。 , 4.,4.,4。]

obs:[1.,1.,1.,3.,3.,3.,3.,3.,4.,4.,4.,5.,5., 5.,5、5、6、9、9、12、12、12、12、12、12、13、13, 16.,16.,17.,19.,19.,19.,19.,20.,20.,20.,20.,24。]]

pr:[0。 ,0.,0.,0.1,0.2,0.2,0.4,0.4,0.5,0.5,0.7,0.7,0.7, 0.8、0.8、0.8、0.8、0.9、0.9、1,.1、1.1、1.1、1.2、1.3、1.4, 1.4、1.5、1.6、1.7、1.7、1.8、1.8、1.9、2。,2.,2。]

有人可以帮我吗?

python numpy regression statsmodels
1个回答
0
投票

data是基本的NumPy ndarray对象。当您使用[]对其进行索引时,它们将接受整数,切片或其他“类似于数组”的对象。但是,ols函数在the documentation中明确表示:

数据必须使用公式中的键定义__getitem__

这意味着data必须是熊猫DataFrame,字典或NumPy structured array,并带有接受__getitem__对象作为索引的str方法。

© www.soinside.com 2019 - 2024. All rights reserved.