这里的代码将重现类似于我正在做的事情
import pandas as pd
import numpy as np
import scipy as sp
from statsmodels.sandbox.regression.gmm import IV2SLS
from numpy.linalg import LinAlgError
from sklearn.preprocessing import StandardScaler
def gen_data(Sigma, n=100):
try:
Chol = sp.linalg.cholesky(Sigma)
X = np.random.randn(n,Sigma.shape[0])
X = StandardScaler().fit_transform(X)
D = X @ Chol
except LinAlgError:
print("Provide a valid covariance matrix")
D = np.nan
return D
Sigma = np.array(
[[5,1,0],
[1,4,2],
[0,2,3]]
)
df = pd.DataFrame(gen_data(Sigma),columns=["z","x1","u"])
df['y'] = 2*df['x1'] + 2*(df['x1']+df['u']) + np.random.normal(0,1,size=len(df))
IV2SLS.from_formula('y ~ u + [x1 ~ z]', data=df)
据我所知,从一些文档——(1),(2),(3)——我应该能够从上面的代码运行回归。。。我不知道为什么它不喜欢[x1 ~ z]
的语法
目前没有回答
相关问题 更多 >
编程相关推荐