熵坎 2022-04-13 16:41 采纳率: 100%
浏览 658
已结题

在pycharm中ols拟合出现nan,inf

在预测碳排放量时,我使用ols模型,结果出现很多nan,inf

代码

import numpy as np
import pandas as pd
#载入数据
excel_path = r"Testingdata_shiyou.xlsx"
data_df = pd.read_excel(excel_path)
# 给列名重新命名,每一列就是一个自(因)变量的观测值
data_df.columns = ['year', 'I', 'P', 'A', 'Te', 'Ts', 'Td', 'Tc']
# 量纲恢复

# 数据标准化
def normalize(data):
    """对因变量作标准化变换,标准化因子是标准差"""
    return (data - data.mean()) / data.std()
#%%
import statsmodels.api as sm
X = np.log(data_df.iloc[:, 2:])
def mask_nan(X,value):
    '''
    用value值来代替nan 或inf
    '''
    X_values= tf.add(tf.zeros_like(X),value)
    mask = tf.math.is_finite(X)
    y = tf.where(mask,X,X_values)
    return y

y = np.log(data_df.iloc[:, 1])
X = sm.add_constant(X)
ols_model = sm.OLS(y,X).fit()
print(ols_model.summary())

结果

                            OLS Regression Results                            
==============================================================================
Dep. Variable:                      I   R-squared:                       1.000
Model:                            OLS   Adj. R-squared:                    nan
Method:                 Least Squares   F-statistic:                       nan
Date:                Wed, 13 Apr 2022   Prob (F-statistic):                nan
Time:                        16:29:49   Log-Likelihood:                 148.10
No. Observations:                   5   AIC:                            -286.2
Df Residuals:                       0   BIC:                            -288.2
Df Model:                           4                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const         -0.0678        inf         -0        nan         nan         nan
P              0.9989        inf          0        nan         nan         nan
A              0.9892        inf          0        nan         nan         nan
Te             0.9672        inf          0        nan         nan         nan
Ts            -0.2405        inf         -0        nan         nan         nan
Td             0.0003        inf          0        nan         nan         nan
Tc             0.9808        inf          0        nan         nan         nan
==============================================================================
Omnibus:                          nan   Durbin-Watson:                   0.035
Prob(Omnibus):                    nan   Jarque-Bera (JB):                0.362
Skew:                          -0.201   Prob(JB):                        0.834
Kurtosis:                       1.745   Cond. No.                         631.
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The input rank is higher than the number of observations.


我有试过这位的定义mask函数,但结果没变化https://blog.csdn.net/qq_25737169/article/details/78847691?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-5.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-5.pc_relevant_default&utm_relevant_index=10

想请各位帮忙看看如何解决结果里的nan和inf

  • 写回答

4条回答 默认 最新

  • 歇歇 2022-04-13 21:49
    关注

    NaN:not a number
    不是一个数字
    每个变量都Print一下“变量名称”+变量值,看看哪个变量不是数字,这样做还可以看出程序执行到哪步,哪里有问题。
    这么几个变量,很快就能排查出问题。
    如果用这个方法解决了问题,望采纳。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月28日
  • 已采纳回答 4月20日
  • 赞助了问题酬金5元 4月13日
  • 创建了问题 4月13日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分