龙哥 毛哼哼爸 2021-06-04 10:47 采纳率: 33.3%
浏览 518

如何从python OLS 线性回归结果中提取 系数B 的95%可信区间

                           OLS Regression Results                            
==============================================================================
Dep. Variable:                      x          R-squared:                       0.004
Model:                            OLS          Adj. R-squared:                 -0.006
Method:                 Least Squares   F-statistic:                       0.3809
Date:                Fri, 04 Jun 2021     Prob (F-statistic):              0.539
Time:                        10:15:52        Log-Likelihood:                -493.47
No. Observations:             104        AIC:                                990.9
Df Residuals:                     102       BIC:                                996.2
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef             std err          t              P>|t|       [0.025      0.975]
------------------------------------------------------------------------------
Intercept     46.9506      3.145      14.930      0.000       40.713      53.188
y             -0.3424      0.555       -0.617          0.539       -1.443       0.758
==============================================================================
Omnibus:                       28.683        Durbin-Watson:                   2.046
Prob(Omnibus):             0.000          Jarque-Bera (JB):               52.685
Skew:                           1.138           Prob(JB):                           3.63e-12
Kurtosis:                       5.642          Cond. No.                           6.52
==============================================================================

代码

import pandas as pd
import numpy
import scipy.stats as stats
import openpyxl
import csv
import re
from sklearn.linear_model import LinearRegression
import statsmodels.api as sm
from statsmodels.formula.api import ols


from pandas import Panel
df = pd.DataFrame(pd.read_excel(r'C:\Users\chenj\Desktop\COPD血清因子浓度.xlsx'))
df1=open(r'C:\Users\chenj\Desktop\R语言和python分析COPD血清因子和吸烟、生物燃料分段线性\BS normal人群香烟烟雾暴露的影响.csv','w',newline='') #newline='' 行与行之间没有空行了。以只读的模式建立一个空的CSV文件,新文件会覆盖旧文件。请注意。
writer=csv.writer(df1) # 可以理解为初始化csv
writer.writerow('BSE normal人群生物燃料暴露线性关系') # 在CSV文件上写入‘表头’。第一行是表头,所以,这句写在最前面
writer.writerow(['因子','b','p']) # 接着写入列的名称
#exposed_factors=['吸烟年包','生物年时']
exposed_factor='吸烟年包'
tested_factors=['IL1b','IL4','IL5','IL6','IL13','IL17','IFNr','EOTAXIN','IP10','MIP1a','MIP1b','PDGFbb','VEGF']
df2 = df.loc[(df['分组'] == 7)]
    # 去除无暴露因素的人群,也就是说仅选择有暴露的人群

df2 = df2.dropna(subset=[exposed_factor])  # 去除相关列名有空格的行
print(df1)
df2 = df2.dropna(subset=['IL1b'])
x = df2[exposed_factor].values.reshape(-1, 1)  # 必须是.value 然后再reshape(-1.1)转成1行。
y = df2['IL1b'].values.reshape(-1, 1)
# print(x)
lm_s = ols('x~y', data=df2).fit()
# y=a+bx

print(lm_s.summary())

运行后得到的结果如上所述。现在想提b值的95%可信区间:黑色粗体字的结果  -1.443       0.758

  • 写回答

1条回答 默认 最新

  • weixin_47361975 2023-03-23 23:08
    关注

    要获得b值的95%置信区间,您可以使用lm_s.conf_int()方法,它将返回一个数组,其中包含b值的下限和上限。默认情况下,这将为95%置信区间,您可以使用alpha参数更改置信水平。例如,如果您希望使用90%的置信水平,可以将alpha设置为0.1,如下所示:
    conf_int = lm_s.conf_int(alpha=0.1)
    然后,您可以使用以下代码打印出b值的下限和上限:
    print('Lower bound:', conf_int[1][0])
    print('Upper bound:', conf_int[1][1])
    请注意,conf_int返回的数组中第一个元素是截距的置信区间,第二个元素是b值的置信区间。因此,我们使用conf_int[1]来获得b值的置信区间。

    评论

报告相同问题?

悬赏问题

  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容