iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 12
1
AI & Data

飛哥與小博的30天-統計與機器學習成長日記系列 第 12

[DAY 12] 章節2-8: 安眠藥的極限-一般線性回歸(Python)

  • 分享至 

  • xImage
  •  

人物介紹: 曾顧問

目前擔任生計部門的顧問,與B董、修經理、士心協理常一起登百岳,飛哥在一次偶然的邀請下才跟他們一起出團。個性耿直,對專案的執行很有自己的堅持,但有時事情一忙起來容易忘記剛剛所講的重點。

2-8 安眠藥的極限

過了兩天,來到起飛當日,飛哥與小博搭著新加坡航空抵達新加坡市,此行時間緊迫,所以沒有充足的時間讓他們歇息下,直奔位於裕廊飛禽公園附近的一間新的製藥工廠,在警衛的帶領下,很快就來到B董的辦公室。

「我給你介紹下,還記得這幾位吧! 就是之前我們常一起去爬山的那幾位同好。」B董指了指旁邊三位西裝筆挺的夥伴。

「啊! 你們三個都在這邊工作啊,也太巧了吧! 曾顧問、修經理、士心協理。」飛哥赫然發現旁邊站著的三位都是以前曾跟自己爬上玉山主峰的朋友們。

「好久不見啦! 飛哥,你遠道而來,咱今天結束工作後去附近的餐廳跟大家一起敘敘舊吧,你說好不?」曾顧問激動地握著飛哥的手,展現了好客的一面。

隨後,曾顧問開始報告起,說道:「近期公司在研發安眠藥,發現新成分NMSL對穩定睡眠很有幫助,公司一直使用的舊成份GNP4雖然已經研究透徹了,但原物料價格一直攀升導致利潤持續下降,這次要請飛哥調查下NMSL的成分多寡如何影響睡眠時間。」並遞出了份產品測試結果書。
https://ithelp.ithome.com.tw/upload/images/20200927/20130640qmXg2StxGM.png

「這數據看起來挺漂亮的啊,等我跑個一般線性回歸模型,這個Y是放sleeping time,X放的是NMSL的克數,探討的議題是『NMSL的多寡對睡眠時間的影響』,喔! 結果出來了,有幾個重點我來說明給你聽

  • 因為Y是屬於連續數值,因此採用一般線性模型。
  • R-squared的值介於0~1之間,數值愈高表示回歸擬和的效果愈好。
  • 由下面的結果可以發現公式長成
    sleeping time= -5.047+1.997×NMSL
    也就是說『每提高NMSL在藥中成份1mg,就能提升約2小時的睡眠』
  • x1代表的是NMSL的用量,後方P>|t|數值為0.000實際意義是「該數值遠小於0」,也就是說這個變數對睡眠時間影響很大,已達到統計上的顯著效果。

    https://ithelp.ithome.com.tw/upload/images/20200927/20130640AmMIIS1kSN.png

「每提高NMSL在藥中成份1mg,就能提升約2小時的睡眠?! 感覺不錯啊,我在請我們部門調整看看啊,是不是愈多愈好,哈哈哈!」曾顧問笑得開懷了起來。

「也不能這樣說啊,或許NMSL加高到一定的數值後就不會有這麼好的效果了,可能還有些副作用,你的睡眠時間資料最大也才到13小時左右,難保之後的效果是遞減,這部分還要再做確認。」飛哥正色道。

「是是是,這個我會再多跟現場人員說明的,我先去忙啦,晚點見!」曾顧問收拾好資料後就趕往其他的會議室了。

小博第一次看到數據還能用這樣的模擬方式來還原實際狀況,顯得有些興奮,不知道飛哥後面還有甚麼更厲害的方法。


Python程式時間

import numpy as np
import matplotlib.pyplot as plt

#設定資料集
rng=np.random.RandomState(2) #numpy.random.randn(d0, d1, …, dn)是從常態分配中返回一個或多個值 
# randomstate 後方數值可自行設定,保持隨機出來的值固定,若希望每次都是隨機值,可改用

x=10*rng.rand(50)  #numpy.random.rand(d0, d1, …, dn)的數值會產生在(0,1)之間
y=2*x-5+rng.randn(50)
plt.scatter(x,y,s=20) # s is point size
plt.xlabel('NMSL(mg)',fontsize=20)
plt.ylabel('sleeping time(hr)',fontsize=20)
plt.show()

#設定模型
import statsmodels.api as sm
est = sm.OLS(y, sm.add_constant(x)).fit()
est.summary() #輸出回歸結果
print(est.params) # 輸出參數的係數


資料參考:

https://medium.com/@jacky308082/machine-learning-%E4%B8%8B%E7%9A%84-linear-regression-%E5%AF%A6%E4%BD%9C-%E4%BD%BF%E7%94%A8python-7e1dd03a4d46


上一篇
[DAY 11] 章節2-7: 前往新加坡-區分三種回歸使用時機(解說)
下一篇
[DAY 13] 章節2-9: 安眠藥客群的設定-羅吉斯回歸(Python)
系列文
飛哥與小博的30天-統計與機器學習成長日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言