在閱讀英文文獻(xiàn)時抠刺,常常會看到擬合線中會有置信區(qū)間的存在岩四,通常是95%的置信區(qū)間,而這個是怎么來的呢,如果僅僅用excel或orign進行擬合的話是出不來置信區(qū)間的,本文介紹基于python和基于R的兩種實現(xiàn)方式材鹦。
基于python的擬合線置信區(qū)間
首先看下本文作者用自己數(shù)據(jù)基于python出來的圖
注:第二張圖例的slope和p值是后期p上去可都,第一張圖是基于python,第二張是基于R
本文引入python的第三方庫seaborn進行繪制婚陪,庫的安裝可使用pip install seaborn命令進行安裝族沃。具體如下:
(1)推薦安裝Anaconda,具體軟件的鏈接自行百度
(2)選擇圖中的紅線部分,打開后在里面輸入pip install seaborn即可以安裝成功了
打開里面的Spyder程序脆淹,通過file-new file新建腳本常空,輸入以下命令即可
import seaborn as sns
tips = sns.load_dataset("tips") #導(dǎo)入sns中自帶的數(shù)據(jù)集
sns.regplot(x="total_bill",y="tip",data=tips)
結(jié)果如下:
如果說我們的數(shù)據(jù)格式是excel的,先另存為csv格式的
然后用如下代碼:
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
plt.figure(figsize=(5, 5)) #設(shè)置圖片的長和寬
data = pd.read_csv(u'D://test.csv') #讀取存放的文件
sns.regplot(x="total_bill",y="tip",data=data)
結(jié)果如下
上面的圖片結(jié)果中的分辨率較低盖溺,后續(xù)需要進一步保存為高質(zhì)量的圖片漓糙。主要是加入plt.savefig命令完整代碼如下
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
data = pd.read_csv(u'D://test.csv') #讀取存放的文件
plt.figure(figsize=(5, 5))
sns.regplot(x="total_bill",y="tip",data=data)
plt.savefig(u'D://test.pdf')
結(jié)果如下:
建議大家安裝Adobe Acrobat Pro版本的pdf編輯器,能夠?qū)df進行再次編輯咐柜,調(diào)整里面的字體和大小及顏色等兼蜈,簡直神器。
當(dāng)我們需要進行分兩組進行擬合拙友,并要將結(jié)果顯示在同一張圖時为狸,采用lmplot函數(shù)并增加一個參數(shù)hue就能實現(xiàn),具體如下
import seaborn as sns
from matplotlib import pyplot as plt
tips = sns.load_dataset("tips")
plt.figure(figsize=(5, 5))
sns.lmplot(x="total_bill",y="tip",hue="sex",data=tips)
plt.savefig(u'D://test2.pdf')
結(jié)果如下:
在D盤下面也會生成test2.pdf這個文件遗契。但當(dāng)分組類別比較多的時候就不適用于把這么多組放在同一張圖里面辐棒,此時如何做呢?
答案是將上述代碼中的hue改為col即可牍蜂,
import seaborn as sns
from matplotlib import pyplot as plt
tips = sns.load_dataset("tips")
plt.figure(figsize=(5, 5))
sns.lmplot(x="total_bill",y="tip",col="sex",data=tips)
plt.savefig(u'D://test2.pdf')
結(jié)果如下
通過上述代碼遍能夠生成pdf格式的帶擬合線置信區(qū)間的折線圖了漾根,然后用ps打開pdf便可以隨意設(shè)置分辨率。
注意:目前如何調(diào)出擬合線的方程并自動添加R2本人還沒有做出來鲫竞,需要后續(xù)通過ps將R2和方程給p上去辐怕。
作者最后用自己的數(shù)據(jù)生成代碼如下:
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
data = pd.read_csv(u'D:\\haihe.csv') #讀取存放的文件
plt.figure(figsize=(10, 6))
sns.lmplot(x="year",y="value",data=data,hue="type")
plt.savefig(u'D://haihe.pdf')
數(shù)據(jù)格式請參考上述代碼中的tips數(shù)據(jù)集的格式
更多需求,請查看個人介紹