基于Python和R的多元线性回归分析实例
生活随笔
收集整理的這篇文章主要介紹了
基于Python和R的多元线性回归分析实例
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 實(shí)驗(yàn)?zāi)康?/li>
- 實(shí)驗(yàn)內(nèi)容
- 分析影響因變量Y的主要影響因素及經(jīng)濟(jì)意義
- 建立散點(diǎn)圖考察Y與每一個(gè)自變量之間的相關(guān)關(guān)系
- Python
- R語言
- 建立多元回歸模型,并計(jì)算回歸系數(shù)和統(tǒng)計(jì)量
- Python
- R語言
實(shí)驗(yàn)?zāi)康?/h1>
- 掌握一元線性回歸、多元線性回歸模型的建模原理、估計(jì)及檢驗(yàn)方法。
- 能運(yùn)用相應(yīng)的統(tǒng)計(jì)軟件(SAS\SPSS\R)進(jìn)行計(jì)算、分析。
實(shí)驗(yàn)內(nèi)容
- 某大型牙膏制造企業(yè)為了更好地拓展產(chǎn)品市場,有效地管理庫存,公司董事會(huì)要求銷售部門根據(jù)市場調(diào)查,找出公司生產(chǎn)的牙膏銷售量與銷售價(jià)格、廣告投入等之間的關(guān)系,從而預(yù)測出在不同價(jià)格和廣告費(fèi)用下的銷售量。為此,銷售部的研究人員收集了過去30個(gè)銷售周期(每個(gè)銷售周期為4周)公司生產(chǎn)的牙膏的銷售量、銷售價(jià)格、投入的廣告費(fèi)用,以及同期其它廠家生產(chǎn)的同類牙膏的市場平均銷售價(jià)格,見表1(其中價(jià)格差指其它廠家平均價(jià)格與公司銷售價(jià)格之差)。
- 試根據(jù)這些數(shù)據(jù)建立一個(gè)數(shù)學(xué)模型,分析牙膏銷售量與其它因素的關(guān)系,為制訂價(jià)格策略和廣告投入策略提供數(shù)量依據(jù)。
分析影響因變量Y的主要影響因素及經(jīng)濟(jì)意義
- 對于大多數(shù)消費(fèi)者而言,牙膏作為一種生活的必需品,在購買同類牙膏時(shí),更多的會(huì)關(guān)心不同品牌之間的價(jià)格差,而不是它們的價(jià)格本身。
- 其他廠商平均價(jià)格能展現(xiàn)牙膏的市場均價(jià),與自身品牌的價(jià)格的差異可能會(huì)影響消費(fèi)者選擇。但是,在研究各個(gè)因素對銷售量的影響時(shí),用價(jià)格差代替公司銷售價(jià)格和其他廠家平均價(jià)格,更加直觀和合適。
- 廣告費(fèi)用多少?zèng)Q定了廠家對于牙膏的推廣力度,會(huì)在一定程度上影響消費(fèi)者的選擇。較大的廣告推廣力度,會(huì)加深消費(fèi)者對產(chǎn)品的認(rèn)知并在一定程度上提高產(chǎn)量。
建立散點(diǎn)圖考察Y與每一個(gè)自變量之間的相關(guān)關(guān)系
- 如圖所示,設(shè)銷售量為 ,銷售價(jià)格、其它廠家平均價(jià)格、廣告費(fèi)用和價(jià)格差分別作為 ,繪制4個(gè)散點(diǎn)圖。
- 此外,如表所示,計(jì)算每個(gè)自變量與銷售的皮爾遜相關(guān)系數(shù)。
- 由上述分析與散點(diǎn)圖可看出,牙膏銷售量與廣告費(fèi)用和價(jià)格差呈線性關(guān)系,與其它廠家平均價(jià)格、廣告費(fèi)用和價(jià)格差相關(guān)程度較高。
Python
import pandas as pd
import numpy as np
data = pd.read_csv("E:\Code\Jupyter Notebook Code\數(shù)學(xué)建模\Data\多元線性回歸數(shù)據(jù).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() # 其他廠商平均價(jià)格、廣告費(fèi)用、價(jià)格差#用來正常顯示中文標(biāo)簽
plt.rcParams['font.sans-serif']=['SimHei']
#用來正常顯示負(fù)號
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('銷售價(jià)格',size=15)
plt.subplot(2,2,2)
plt.grid()
plt.scatter(label,factor[:,1])
plt.xlabel('銷售量',size=15)
plt.ylabel('其它廠家平均價(jià)格',size=15)
plt.subplot(2,2,3)
plt.grid()
plt.scatter(label,factor[:,2])
plt.xlabel('銷售量',size=15)
plt.ylabel('廣告費(fèi)用',size=15)
plt.subplot(2,2,4)
plt.grid()
plt.scatter(label,factor[:,3])
plt.xlabel('銷售量',size=15)
plt.ylabel('價(jià)格差',size=15)
plt.tight_layout()
#plt.savefig('1.jpg',dpi=300)
R語言
data = read.csv("E:/Code/R Code/Data/多元線性回歸數(shù)據(jù).csv") cor(data[2:6],method = "pearson")建立多元回歸模型,并計(jì)算回歸系數(shù)和統(tǒng)計(jì)量
- 記牙膏銷售量為YYY,其它廠家平均價(jià)格X1X_{1}X1? ,廣告費(fèi)為X2X_{2}X2? ,廣告費(fèi)用為X3X_{3}X3? ,構(gòu)建多元線性回歸模型:
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() # 其他廠商平均價(jià)格、廣告費(fèi)用、價(jià)格差Y=label X=factor[:,1:] X=sm.add_constant(X) # 添加截距項(xiàng)model = sm.OLS(Y,X).fit() # 擬合OLS模型 model.summary() # #模型的擬合值 y_train_pred = model.predict(X)#繪制最佳擬合線:標(biāo)簽用的是訓(xùn)練數(shù)據(jù)的預(yù)測值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)總結(jié)
以上是生活随笔為你收集整理的基于Python和R的多元线性回归分析实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 硕盟type-c转接头HDMI+VGA+
- 下一篇: python读取.ttf字体文件