学习记录2-多元线性回归模型(附上python代码)

这篇具有很好参考价值的文章主要介绍了学习记录2-多元线性回归模型(附上python代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

研究货运总量 y (万吨)与工业总产值 x1(亿元)、农业总产值 x2(亿元),居民非商品支出 X3 (亿元)的关系。数据见表3-9。
(1)计算出 y , x1 ,x2, x3 的相关系数矩阵。

(2)求 y 关于 x1 ,x2, x3 的三元线性回归方程。
(3)对所求得的方程做拟合优度检验。
(4)对回归方程做显著性检验。
(5)对每一个回归系数做显著性检验。
(6)如果有的回归系数没通过显著性检验,将其剔除,重新建立回归方程归方程的显著性检验和回归系数的显著性检验。
(7)求出每一个回归系数的置信水平为95%的置信区间
8)求标准化回归方程。
(9)求当X01=75,X02=42,X03=3.1时的,给定置信水平为95%,用算精确置信区间,手工计算近似预测区间
(10)结合回归方程对问题做一些基本分析

 表3-9

学习记录2-多元线性回归模型(附上python代码)

 注:每一小问的运行结果我以备注的形式 放在代码段里面


#导入需要的库和数据
import numpy as np
import statsmodels.api as sm
import statsmodels.formula.api as smf
from statsmodels.stats.api import anova_lm
import matplotlib.pyplot as plt
import pandas as pd
from patsy import dmatrices

# Load data
df = pd.read_csv('C:\\Users\\joyyiyi\\Desktop\\zy3.11.csv',encoding='gbk')
#解决第(!)问
#计算相关系数
cor_matrix = df.corr(method='pearson')  # 使用皮尔逊系数计算列与列的相关性
# cor_matrix = df.corr(method='kendall')
# cor_matrix = df.corr(method='spearman')

print(cor_matrix)

'''
结果:
C:\Users\joyyiyi\AppData\Local\Programs\Python\Python39\python.exe C:/Users/joyyiyi/PycharmProjects/pythonProject6/0.py
           y        x1        x2        x3
y   1.000000  0.555653  0.730620  0.723535
x1  0.555653  1.000000  0.112951  0.398387
x2  0.730620  0.112951  1.000000  0.547474
x3  0.723535  0.398387  0.547474  1.000000

Process finished with exit code 0
'''
#解决第(2)(3)(4)(5)问
result = smf.ols('y~x1+x2+x3',data=df).fit()

#print(result.params)    #输出回归系数
print(result.summary())
print("\n")
print(result.pvalues)     #输出p值

#

'''
运行结果:

C:\Users\joyyiyi\AppData\Local\Programs\Python\Python39\python.exe C:/Users/joyyiyi/PycharmProjects/pythonProject6/0.py
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                      y   R-squared:                       0.806
Model:                            OLS   Adj. R-squared:                  0.708
Method:                 Least Squares   F-statistic:                     8.283
Date:                Wed, 09 Nov 2022   Prob (F-statistic):             0.0149
Time:                        11:15:30   Log-Likelihood:                -43.180
No. Observations:                  10   AIC:                             94.36
Df Residuals:                       6   BIC:                             95.57
Df Model:                           3                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
Intercept   -348.2802    176.459     -1.974      0.096    -780.060      83.500
x1             3.7540      1.933      1.942      0.100      -0.977       8.485
x2             7.1007      2.880      2.465      0.049       0.053      14.149
x3            12.4475     10.569      1.178      0.284     -13.415      38.310
==============================================================================
Omnibus:                        0.619   Durbin-Watson:                   1.935
Prob(Omnibus):                  0.734   Jarque-Bera (JB):                0.562
Skew:                           0.216   Prob(JB):                        0.755
Kurtosis:                       1.922   Cond. No.                     1.93e+03
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 1.93e+03. This might indicate that there are
strong multicollinearity or other numerical problems.


Intercept    0.095855
x1           0.100197
x2           0.048769
x3           0.283510
dtype: float64

Process finished with exit code 0
'''
'''

(2)回答:线性方程:
Y=-348.2802+3.7540x1+7.1007x2+12.4475x3
(3)回答:R方=0.806,调整后R方=0.708
#或者说R=0.806>R0.05(8)=0.632,所以接受原假设,说明x与y有显著的线性关系
#或者说调整后的决定系数为0.708,说明回归方程对样本观测值的拟合程度较好。
(4)回答:做(F检验)
#原假设H0=β1=β2=β3=0
# F=8.283>F0.05(3,6)=4.76,或者说P=0.0149<α=0.05,说明拒绝原假设H0,x与y有显著的线性关系
(5)x1,x2,x3的t值分别为:
t1=1.942<t0.05(8)=1.943或者α=0.100>α=0.05,所以接受原假设,说明x1对y没有显著的影响
t2=2.465>t0.05(8)=1.943或者α=0.049<α=0.05,所以拒绝原假设,说明x1对y有显著的影响         
t3=1.178<t0.05(8)=1.943或者α=0.284>α=0.05,所以接受原假设,说明x1对y没有显著的影响
'''

#在第(5)中发现除了x2外其他回归系数都未通过显著性检验,首先剔除x3看看效果
result = smf.ols('y~x1+x2',data=df).fit()

#print(result.params)    #输出回归系数
print(result.summary())
print("\n")
print(result.pvalues)     #输出p值

'''
运行结果:
C:\Users\joyyiyi\AppData\Local\Programs\Python\Python39\python.exe C:/Users/joyyiyi/PycharmProjects/pythonProject6/0.py
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                      y   R-squared:                       0.761
Model:                            OLS   Adj. R-squared:                  0.692
Method:                 Least Squares   F-statistic:                     11.12
Date:                Wed, 09 Nov 2022   Prob (F-statistic):            0.00672
Time:                        11:49:08   Log-Likelihood:                -44.220
No. Observations:                  10   AIC:                             94.44
Df Residuals:                       7   BIC:                             95.35
Df Model:                           2                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
Intercept   -459.6237    153.058     -3.003      0.020    -821.547     -97.700
x1             4.6756      1.816      2.575      0.037       0.381       8.970
x2             8.9710      2.468      3.634      0.008       3.134      14.808
==============================================================================
Omnibus:                        1.265   Durbin-Watson:                   1.895
Prob(Omnibus):                  0.531   Jarque-Bera (JB):                0.631
Skew:                          -0.587   Prob(JB):                        0.730
Kurtosis:                       2.630   Cond. No.                     1.63e+03
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 1.63e+03. This might indicate that there are
strong multicollinearity or other numerical problems.


Intercept    0.019859
x1           0.036761
x2           0.008351
dtype: float64

Process finished with exit code 0

'''

#第(6)问回答:
在剔除x3后,回归方程Y=-459.6237+4.6756x1+8.9710x2
的拟合优度R2=0.761,F值=11.12(有所提高),回归系数的P值均小于0.05 因此回归系数均通过显著性t检验

#第(7)问回答:
通过summary()输出的回归结果最右边“[0.025      0.975]”这个位置可以看到
常数项,x1,x2的回归系数置信水平为95%的置信区间分别为:[-821.547,-97.700],[0.381,8.970],[3.134,14.808]

#标准化
dfnorm = (df-df.mean())/df.std()
new = pd.Series({'x1': 4000,'x2': 3300,'x3': 113000,'x4': 50.0,'x5': 1000.0})
newnorm = (new-df.mean())/df.std()
#标准化后构建无截距模型
resultnorm = smf.ols('y~x1+x2',data=dfnorm).fit()

print(resultnorm.summary())
'''
运行结果:
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                      y   R-squared:                       0.761
Model:                            OLS   Adj. R-squared:                  0.692
Method:                 Least Squares   F-statistic:                     11.12
Date:                Fri, 11 Nov 2022   Prob (F-statistic):            0.00672
Time:                        22:51:34   Log-Likelihood:                -6.5156
No. Observations:                  10   AIC:                             19.03
Df Residuals:                       7   BIC:                             19.94
Df Model:                           2                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
Intercept  -8.327e-17      0.175  -4.75e-16      1.000      -0.415       0.415
x1             0.4792      0.186      2.575      0.037       0.039       0.919
x2             0.6765      0.186      3.634      0.008       0.236       1.117
==============================================================================
Omnibus:                        1.265   Durbin-Watson:                   1.895
Prob(Omnibus):                  0.531   Jarque-Bera (JB):                0.631
Skew:                          -0.587   Prob(JB):                        0.730
Kurtosis:                       2.630   Cond. No.                         1.12
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.

Process finished with exit code 0

'''
第(8)问:
标准化后的回归方程为:
y=0.4792x1+0.6765x2-8.327e-17
 # Load data
df = pd.read_csv('C:\\Users\\joyyiyi\\Desktop\\zy3.11.csv',encoding='gbk')

# print(df)
result = smf.ols('y~x1+x2',data=df).fit()
#标准化
dfnorm = (df-df.mean())/df.std()
new = pd.Series({'x1': 75,'x2': 42})
newnorm = (new-df.mean())/df.std()
#标准化后构建无截距模型
resultnorm = smf.ols('y~x1+x2',data=dfnorm).fit()
#单值预测
predictnorm = resultnorm.predict(pd.DataFrame({'x1': [newnorm['x1']],'x2': [newnorm['x2']]}))
#因为单值预测是基于标准化后的模型,需要对y值还原,y值还原方法:
ypredict = predictnorm*df.std()['y'] + df.mean()['y']
print("ypredict:")
print(ypredict)
#区间
predictions = result.get_prediction(pd.DataFrame({'x1': [75],'x2': [42]}))
print('置信水平为95%,区间预测:')
print(predictions.summary_frame(alpha=0.05))

#近似预测区间:
ylow=267.83-2*np.sqrt(result.scale)
yup=267.83+2*np.sqrt(result.scale)
print(ylow,yup)


'''
运行结果:
C:\Users\joyyiyi\AppData\Local\Programs\Python\Python39\python.exe C:/Users/joyyiyi/PycharmProjects/pythonProject6/回归作业.py
ypredict:
0    267.829001
dtype: float64
置信水平为95%,区间预测:
         mean    mean_se  ...  obs_ci_lower  obs_ci_upper
0  267.829001  11.782559  ...    204.435509    331.222493

[1 rows x 6 columns]

219.66776823691464 315.99223176308533


Process finished with exit code 0
'''
第(9)问:
y0的预测值为267.829;
y0预测值的置信水平为95%的精确置信区间为:[204.44,331.22],
y0近似预测区间为:[219.67,315.99]

在做这次作业的时候因为不确定答案对不对,参考了csdn的另一位朋友的文章:

R语言之多元线性回归xt3.11_princess yang的博客-CSDN博客_为了研究货运量y与工业总产值x1

这篇写的很好,比我更有条理哦文章来源地址https://www.toymoban.com/news/detail-437423.html

到了这里,关于学习记录2-多元线性回归模型(附上python代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 多元线性回归(OLS+稳健误)python代码实现

    多元线性回归主要适用于应变量和自变量具有较强的线性关系,且主要研究 因变量(被解释变量) 和 自变量(解释变量) 之间的 相关关系 ,从而达到解释或者预测的作用。而且一般用于处理 横截面数据 ,横截面数据一般为同一时间段的不同对象的数据,比如同一年中的

    2024年02月03日
    浏览(36)
  • 【人工智能】多元线性回归模型举例及python实现方式

    比如你做了一个企业想要招人,但是不知道月薪应该定在多少,你做了一个月薪和收入的调研,包括年限、学历、地区和月薪 做一个月薪=w1 年限+w2 学历+w3*城市+…+b的工作年限和薪资的多元线性模型,然后找出最适合线性模型的直线-成本函数、梯度下降方式,来预估你可以

    2024年02月19日
    浏览(53)
  • 【数学建模】多元线性回归(Python&Matlab代码实现)

    目录 1 概述 2 算例1 2.1 算例 2.2 Python代码实现  2.3 结果 3 算例2  3.1 算例 3.2 Python代码 3.3 结果 4 算例3 4.1 算例 4.2 Python代码 4.3 结果 5 算例4——Matlab代码实现 5.1 算例 5.2 Matlab代码实现 5.3 结果  6 写在最后 一元线性回归模型研究的是一个因变量与一个自变量之间呈直线趋势的

    2023年04月15日
    浏览(46)
  • 多元线性回归的python代码实现(基于sklearn的波士顿房价boston数据集为例)

    基于sklearn自带数据集波士顿房价数据集进行多元线性回归算法代码实现,其数据集包括13个特征向量,共计506个样本集。 本文代码实现步骤如下: 1. 获取数据集 2. 数据集切分,老规矩,80%训练,20%测试 3. 数据预处理(本用例尝试过归一化处理,但发现效果不好,不是每一个

    2024年02月06日
    浏览(48)
  • 多元线性回归模型

    目录 一、一元线性回归之旧轿车价格案例 二、多元线性回归之洞庭湖污染物案例实测 三、说一说plot函数的用法 四、感想 直接上例题 一、一元线性回归之旧轿车价格案 以x表示使用年数,y表示相应平均价格。根据表中x、y的数据,建立一个数据模型,分析旧轿车平均价格与

    2024年02月05日
    浏览(40)
  • 如何对多元线性回归模型调参?

    多元线性回归模型通常不像复杂的机器学习模型那样拥有许多可调节的超参数。然而,仍有一些关键步骤和技巧可以用于优化多元线性回归模型的性能: 特征选择 移除无关特征:通过分析特征与目标变量的关联度,移除与目标变量关联度低的特征。 使用特征选择方法:可以

    2024年01月23日
    浏览(40)
  • 机器学习——多元线性回归算法

    多元线性回归算法,即多特征量线性回归算法,用多个特征量来进行预测,如这里用多个特征量(房子面积、卧室数量、房屋楼层数、房子年龄)来预测房子的售价问题 假如有一个多特征量的机器学习问题,并且这个问题中的多个特征可以在一个相近的范围内取值,那么可以

    2024年02月22日
    浏览(46)
  • 机器学习~从入门到精通(二)线性回归算法和多元线性回归

    SimpleLinearRegression.py moduel_selection.py draft.py lin_fit(x,y) lin_fit2(x,y) x.shape y.shape MSE mean squared error 均方误差 R squared error

    2024年02月01日
    浏览(68)
  • Python预测——多元线性回归

    答辩结束了,把论文里有用的东西摘出来。 多元线性回归模型: 其中 y 为要预测的变量,x 为影响 y 值的变量,b 为回归系数,计算方式为: 计算结果为一个矩阵,分别对应b0,b1,b2,b3。 对猪肉价格进行预测,即猪肉价格作为 y,选择猪肉价格指数,生猪屠宰量,猪粮比作

    2024年02月03日
    浏览(35)
  • Python多元线性回归sklearn

    2024年01月24日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包