基于Python和R的多元线性回归分析实例
生活随笔
收集整理的這篇文章主要介紹了
基于Python和R的多元线性回归分析实例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 實驗目的
- 實驗內容
- 分析影響因變量Y的主要影響因素及經濟意義
- 建立散點圖考察Y與每一個自變量之間的相關關系
- Python
- R語言
- 建立多元回歸模型,并計算回歸系數和統計量
- Python
- R語言
實驗目的
- 掌握一元線性回歸、多元線性回歸模型的建模原理、估計及檢驗方法。
- 能運用相應的統計軟件(SAS\SPSS\R)進行計算、分析。
實驗內容
- 某大型牙膏制造企業為了更好地拓展產品市場,有效地管理庫存,公司董事會要求銷售部門根據市場調查,找出公司生產的牙膏銷售量與銷售價格、廣告投入等之間的關系,從而預測出在不同價格和廣告費用下的銷售量。為此,銷售部的研究人員收集了過去30個銷售周期(每個銷售周期為4周)公司生產的牙膏的銷售量、銷售價格、投入的廣告費用,以及同期其它廠家生產的同類牙膏的市場平均銷售價格,見表1(其中價格差指其它廠家平均價格與公司銷售價格之差)。
- 試根據這些數據建立一個數學模型,分析牙膏銷售量與其它因素的關系,為制訂價格策略和廣告投入策略提供數量依據。
分析影響因變量Y的主要影響因素及經濟意義
- 對于大多數消費者而言,牙膏作為一種生活的必需品,在購買同類牙膏時,更多的會關心不同品牌之間的價格差,而不是它們的價格本身。
- 其他廠商平均價格能展現牙膏的市場均價,與自身品牌的價格的差異可能會影響消費者選擇。但是,在研究各個因素對銷售量的影響時,用價格差代替公司銷售價格和其他廠家平均價格,更加直觀和合適。
- 廣告費用多少決定了廠家對于牙膏的推廣力度,會在一定程度上影響消費者的選擇。較大的廣告推廣力度,會加深消費者對產品的認知并在一定程度上提高產量。
建立散點圖考察Y與每一個自變量之間的相關關系
- 如圖所示,設銷售量為 ,銷售價格、其它廠家平均價格、廣告費用和價格差分別作為 ,繪制4個散點圖。
- 此外,如表所示,計算每個自變量與銷售的皮爾遜相關系數。
- 由上述分析與散點圖可看出,牙膏銷售量與廣告費用和價格差呈線性關系,與其它廠家平均價格、廣告費用和價格差相關程度較高。
Python
import pandas as pd import numpy as np data = pd.read_csv("E:\Code\Jupyter Notebook Code\數學建模\Data\多元線性回歸數據.csv").iloc[:,1:] data.head() data.corr(method='pearson') import matplotlib.pyplot as plt import seaborn as snslabel = data.iloc[:,-1].to_numpy() # 銷售量 factor = data.iloc[:,:-1].to_numpy() # 其他廠商平均價格、廣告費用、價格差#用來正常顯示中文標簽 plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示負號 plt.rcParams['axes.unicode_minus']=Falseplt.figure(figsize=(8,8)) plt.subplot(2,2,1) plt.grid() plt.scatter(label,factor[:,0]) plt.xlabel('銷售量',size=15) plt.ylabel('銷售價格',size=15) plt.subplot(2,2,2) plt.grid() plt.scatter(label,factor[:,1]) plt.xlabel('銷售量',size=15) plt.ylabel('其它廠家平均價格',size=15) plt.subplot(2,2,3) plt.grid() plt.scatter(label,factor[:,2]) plt.xlabel('銷售量',size=15) plt.ylabel('廣告費用',size=15) plt.subplot(2,2,4) plt.grid() plt.scatter(label,factor[:,3]) plt.xlabel('銷售量',size=15) plt.ylabel('價格差',size=15) plt.tight_layout() #plt.savefig('1.jpg',dpi=300)R語言
data = read.csv("E:/Code/R Code/Data/多元線性回歸數據.csv") cor(data[2:6],method = "pearson")建立多元回歸模型,并計算回歸系數和統計量
- 記牙膏銷售量為YYY,其它廠家平均價格X1X_{1}X1? ,廣告費為X2X_{2}X2? ,廣告費用為X3X_{3}X3? ,構建多元線性回歸模型:
Y=β0+β1X1+β2X2+β3X3Y=\beta_{0}+\beta_{1} X_{1}+\beta_{2} X_{2}+\beta_{3} X_{3}Y=β0?+β1?X1?+β2?X2?+β3?X3? - 擬合模型,得到β0=7.5891\beta_{0}=7.5891β0?=7.5891 ,β1=?0.7455\beta_{1}=-0.7455β1?=?0.7455 ,β2=0.5012\beta_{2}=0.5012β2?=0.5012 ,β3=2.3577\beta_{3}=2.3577β3?=2.3577 。最終得到多元線性回歸模型:
Y=7.5891+?0.7455X1+0.5012X2+2.3577X3Y=7.5891+-0.7455X_{1}+0.5012X_{2}+2.3577X_{3}Y=7.5891+?0.7455X1?+0.5012X2?+2.3577X3?
Python
import statsmodels.api as sm label = data.iloc[:,-1].to_numpy() # 銷售量 factor = data.iloc[:,:-1].to_numpy() # 其他廠商平均價格、廣告費用、價格差Y=label X=factor[:,1:] X=sm.add_constant(X) # 添加截距項model = sm.OLS(Y,X).fit() # 擬合OLS模型 model.summary() # #模型的擬合值 y_train_pred = model.predict(X)#繪制最佳擬合線:標簽用的是訓練數據的預測值y_train_pred plt.figure(figsize=(8,4)) plt.plot(label.reshape(-1,1),color='#00b0ff',label="Observations",linewidth=1.5) plt.plot(y_train_pred,color='#ff3d00',label="Prediction",linewidth=1.5) plt.legend(loc="upper left") plt.grid(alpha=0.6) plt.tight_layout()R語言
test_data = data.frame(data[3],data[4],data[5],data[6]) colnames(test_data) <- c('X1','X2','X3','Y') model_lm = lm(Y~X1+X2+X3,data=test_data) summary(model_lm)總結
以上是生活随笔為你收集整理的基于Python和R的多元线性回归分析实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 硕盟type-c转接头HDMI+VGA+
- 下一篇: Android中使用字体文件