改为python,不用glm函数
时间: 2023-07-07 16:39:26 浏览: 43
好的,请参考以下Python代码,使用sklearn库中的线性回归模型LinearRegression、逻辑回归模型LogisticRegression以及概率模型GaussianNB进行拟合。
```python
import numpy as np
from sklearn.linear_model import LinearRegression, LogisticRegression
from sklearn.naive_bayes import GaussianNB
from scipy.stats import norm, binom
n = 10000000
p = 10
x = np.random.normal(size=(n, p))
beta = np.arange(1, p+1).reshape(-1, 1)
z = x @ beta
condprob = norm.cdf(z)
y = binom.rvs(1, condprob, size=n).reshape(-1, 1)
linear_fit = LinearRegression().fit(x, y)
logit_fit = LogisticRegression().fit(x, y.ravel())
prob_fit = GaussianNB().fit(x, y.ravel())
coef_mat = np.column_stack((prob_fit.theta_.T, logit_fit.coef_, linear_fit.coef_))
print(coef_mat)
prop_mat = np.column_stack((prob_fit.theta_.T / logit_fit.coef_,
prob_fit.theta_.T / linear_fit.coef_,
logit_fit.coef_ / linear_fit.coef_))
print(prop_mat)
```
其中,LinearRegression和LogisticRegression的使用方法与之前相似,GaussianNB则是一个朴素贝叶斯模型,可以用于概率回归。在这里,我们使用了theta_属性来获取GaussianNB模型的系数。
需要注意的是,由于不同的库或模型的实现方式可能有所不同,因此使用不同的模型进行拟合可能会得到不同的结果。