Python OLS回归结果
我正在尝试对一个大学项目进行“OLS回归结果”,我的代码如下:Python OLS回归结果,python,numpy,regression,statsmodels,Python,Numpy,Regression,Statsmodels,我正在尝试对一个大学项目进行“OLS回归结果”,我的代码如下: 将statsmodels.api导入为sm 从statsmodels.formula.api导入ols 将numpy作为np导入 data=np.loadtxt('file.txt',skiprows=1) 季节=数据[:nb,0] tod=数据[:nb,1] obs=数据[:nb,2] pr=数据[:nb,3] 数据=ols('pr~tod+季节',数据=数据).fit() 表=sm.stats.anova(数据,典型值=2) 数
将statsmodels.api导入为sm
从statsmodels.formula.api导入ols
将numpy作为np导入
data=np.loadtxt('file.txt',skiprows=1)
季节=数据[:nb,0]
tod=数据[:nb,1]
obs=数据[:nb,2]
pr=数据[:nb,3]
数据=ols('pr~tod+季节',数据=数据).fit()
表=sm.stats.anova(数据,典型值=2)
数据汇总表()
打印(表格)
它给了我这个错误“PatsyError:error evaluation factor:indexer:只有整数、片(:
)、省略号(…
)、numpy.newaxis(None
)和整数或布尔数组是有效的索引
pr~tod)+季节“
我认为错误在于我的数据格式。文本文件包含4个不同的列(季节、tod、obs和pr)
有人能帮我吗?
data
是一个基本的NumPyndarray
对象。当您使用[]
对它们进行索引时,它们接受整数、切片或其他“类似数组”的对象。但是,ols
函数在中明确表示:
数据必须使用公式中的键定义\uuuu getitem\uuu
这意味着
data
必须是一个pandasDataFrame
、一个字典或一个NumPy,带有一个接受str
对象作为索引的getitem
方法。data
是一个基本NumPyndarray
对象。当您使用[]
对它们进行索引时,它们接受整数、切片或其他“类似数组”的对象。但是,ols
函数在中明确表示:
数据必须使用公式中的键定义\uuuu getitem\uuu
这意味着
data
必须是一个pandasDataFrame
、一个字典或一个NumPy,其\uuuu getitem\uuuuuuuu
方法接受str
对象作为索引。它也可以是一个字典<代码>{“pr”:pr,“tod”:tod,“seasure”:seasure}@Josef是的,它可以是一个dict,列在最后一句:)它也可以是一本字典<代码>{“pr”:pr,“tod”:tod,“season”:season}@Josef是的,它可以是一个dict,在最后一句中列出:)
season:[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., 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., 13., 13.,
16., 16., 17., 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. ]