Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python线性模型:如何让Python知道这些是标识组的ID列?_Python_Pandas_Dataframe_Linearmodels - Fatal编程技术网

Python线性模型:如何让Python知道这些是标识组的ID列?

Python线性模型:如何让Python知道这些是标识组的ID列?,python,pandas,dataframe,linearmodels,Python,Pandas,Dataframe,Linearmodels,我想对一组个体进行面板回归(固定效应模型),这些个体在时间t上由省和市唯一识别 创建dataframe并运行回归的代码 将numpy导入为np 作为pd进口熊猫 从linearmodels导入PanelOLS 数据={'y':[1,2,3,1,0,3], “x1”:[0,1,2,3,0,2], ‘x2’:[1,1,3,2,1,0], ‘t’:[‘2020-02-18’、‘2020-02-18’、‘2020-02-17’、‘2020-02-18’、‘2020-02-18’、‘2020-02-17’

我想对一组个体进行面板回归(固定效应模型),这些个体在时间
t
上由
唯一识别

创建dataframe并运行回归的代码

将numpy导入为np
作为pd进口熊猫
从linearmodels导入PanelOLS
数据={'y':[1,2,3,1,0,3],
“x1”:[0,1,2,3,0,2],
‘x2’:[1,1,3,2,1,0],
‘t’:[‘2020-02-18’、‘2020-02-18’、‘2020-02-17’、‘2020-02-18’、‘2020-02-18’、‘2020-02-17’,
‘省’:[‘A’、‘A’、‘B’、‘B’、‘B’、‘B’],
‘城市’:[a’、‘b’、‘a’、‘a’、‘c’、‘a’]
dataframe=pd.dataframe(数据,列=['y','x1','x2','t','province','city'])
dataframe=dataframe.set_索引(['t','province','city'],append=True)
mod=PanelOLS(dataframe.y,dataframe[['x1','x2']],entity_effects=True)
但我得到了一个错误,它说“数据帧输入必须有一个2级的多索引。”

---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在里面
1 dataframe=dataframe.set_索引(['t','province','city'],append=True)
---->2 mod=PanelOLS(dataframe.y,dataframe['x1','x2']],entity_effects=True)
C:\ProgramData\Anaconda3\lib\site packages\linearmodels\panel\model.py in\uuuuuu init\uuuuuuuuuuuuuuu(自相关、exog、权重、实体效果、时间效果、其他效果、单件、下拉)
1038下降吸收:布尔=假,
1039)->无:
->1040 super(PanelOLS,self)。\uuuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
1041
1042自我实体效应=实体效应
C:\ProgramData\Anaconda3\lib\site packages\linearmodels\panel\model.py in\uuuuuuu init\uuuuuu(自相关、exog、权重)
224权重:可选[PanelDataLike]=无,
225)->无:
-->226 self.dependent=面板数据(依赖,“Dep”)
227 self.exog=面板数据(exog,“exog”)
228 self.\u原始形状=self.dependent.shape
C:\ProgramData\Anaconda3\lib\site packages\linearmodels\panel\data.py in\uuuuuu init\uuuuu(self,x,var\u name,convert\u dummies,drop\u first,copy)
198如果len(x索引级别)!=2:
199升值错误(
-->200“数据帧输入必须具有“具有2个级别的多索引”
201                     )
202如果存在(自身原始(数据帧、面板数据、系列)):
ValueError:数据帧输入必须具有具有两个级别的多索引
作为解决方案,而不是

dataframe=dataframe.set_index(['t','province','city'], append=True)
我这样做

dataframe=dataframe.set_index(['t'], append=True)

这将允许模型通过。但我不知道为什么。在本例中,我使用两列来标识组如果我需要三列来标识我的组怎么办python如何区分ID和x变量?

根据, 我需要一个单一的实体

将numpy导入为np
作为pd进口熊猫
从linearmodels导入PanelOLS
数据={'y':[1,2,3,1,0,3],
“x1”:[0,1,2,3,0,2],
‘x2’:[1,1,3,2,1,0],
‘t’:pd.截止日期时间(‘2020-02-18’、‘2020-02-18’、‘2020-02-17’、‘2020-02-18’、‘2020-02-18’、‘2020-02-17’),
‘省’:[‘A’、‘A’、‘B’、‘B’、‘B’、‘B’],
‘城市’:[a’、‘b’、‘a’、‘a’、‘c’、‘a’]
dataframe=pd.dataframe(数据,列=['y','x1','x2','t','province','city'])
dataframe[“城市普罗旺斯”]=[(c,p)表示压缩中的c,p(dataframe.city,dataframe.province)]
dataframe=dataframe.set_索引([“普罗旺斯市”,“t”])
y x1 x2省会城市
普罗旺斯市
(a)2020-02-18 101 a
(b,A)2020-02-18 2 1 A b
(a,a)2020-02-17 3 a
(a,B)2020-02-18 1 3 2 B a
(c,B)2020-02-18 01 B c
(a,B)2020-02-17 3 2 0 B a