## **【Statistics 基礎統計:描述性統計】**
:::info
- 樣本或群體/母體 (Sample or population) : 樣本是從母體中抽取的一部分數據,用於進行統計分析和推論
- 參數(parameter):由群體資料所計算之群體表征值
- 統計量(statistic):由樣本資料所計算之樣本表徵值
- 常見符號、
- 群體
- 群體總體(N)、單一(X)
- 群體平均數(𝜇 ,讀作 mu)
- 群體標準差(𝜎 ,讀作 sigma)
- 群體變異數=標準差的平方(σ2 平方,讀作sigma squared)
- 群體相關係數(ρ, 讀作 rho)
- 群體比例 ( P)
- 樣本
- 樣本總體(n)、單一(x)
- 樣本平均數(-x ,讀作 x bar)
- 樣本標準差(s)
- 樣本變異數=標準差的平方(s2 平方,讀作s squared)
- 樣本相關係數 ( r)
- 樣本比例 (^p,讀作 p-hat)
- 描述性統計(Descriptive Statistics): 總結和描述收集到的數據,例如平均值、中位數、標準差等,或者有人說是「總結變量的特徵」,有助於對數據的整體情況有一個初步的理解 (類似 pandas value_count())
- 數值變量(Numerical)
- 數值變量(Numerical)
- 定性變數(Qualitative random variables)
- 定量變數(Quantitative random variables)
- 分類變量(Categorical)
- 集中趨勢(Measures of Central Tendency): 用來描述數據集中程度或中心位置的統計指標
- 中位數 Md(Median):將數據排序後位於中間位置的值
- 眾數 Mo(Mode):一組數據中出現頻率最高的值
- 平均數(Mean):數據的平均值
- 分散或變異趨勢(Dispersion or Variability): 度量資料分佈中每個資料點與資料集平均值,之間的差異或分散程度
- 全距(Range):資料集的最大值和最小值之間的差距
- 方差(Variance): 每個數據點到平均值的平方差,將這些平方差加總/數據的總個數,是一個衡量數據分散程度的指標
- 標準差(Standard Deviation):方差的平方根,也是一個衡量數據分散程度的指標,通常比方差更容易理解,因為它的數值和原始數據的單位一致
- 變異數(Variation): 標準差的平方,每個數據點到平均值的平方差的平均。用來衡量數據分散程度,越大表示數據越分散
- 相對變異數(Coefficient of Variation): 比較不同數據集的離散程度。標準差/平均值*100%。將不同資料集的離散程度進行比較,而不會受到其量綱的影響
- 絕對變異數(Absolute Variance): 每個數據點到平均值的絕對差的平均,然後將這些絕對差加總,最後除以數據的總個數,是一個衡量數據分散程度的指標,考慮的是絕對值,當數據集包含離群值(Outliers)時,絕對變異數不受"極端"離群值的影響
- Z分數 (z-score) : 代表與標準差的距離,(數字-平均值)/標準差,表示一個特定數據點在數據集中相對於平均值的位置
- 經驗法則(Empirical Law)
- [z分配表](http://www.cust.edu.tw/mathmet/stat/z-dist.pdf)
- 柴比雪夫不等式(Chebyshev's inequality):是一種"保守估計"隨機變數與期望值的距離,"不須限制"為鐘型
- 馬可夫不等式(Markov's Inequality): 用來估計一個非負的隨機變量大於等於某個正數的概率
- 四分位數(Quartiles,QD):數據分為四等分的值,包括第一四分位數、第二四分位數(中位數)和第三四分位數
- 四分位距(Interquartile Range,IQR):第三四分位數和第一四分位數之間的距離,用於度量數據的變異性
- 異常值(Outliers):數據集中明顯偏離其他數據點的。通常,資料集中小於 Q1 - 1.5 * IQR 或大於 Q3 + 1.5 * IQR 的值被視為異常值
- 練習
- 協方差(Covariance)是用來衡量兩個隨機變數之間關係的統計量。它表示兩個變數的變化程度是否相關。正協方差表示正相關,負協方差表示負相關,而接近零的協方差表示無關
- 歸一化 : 將不同資料的數值範圍縮放到相似的尺度,以便更好地進行比較、分析和處理,確保在機器學習和資料分析中具有相同的權重,防止某些特徵對模型產生過大的影響
- 取log(對數轉換): 處理數據的偏斜分佈(skewed distribution)或異常值(outliers),可以使偏斜的數據更加對稱,使其更適合應用統計方法,如線性迴歸
- 最小-最大縮放(Min-Max Scaling):將資料線性縮放到指定的範圍,通常是 [0, 1]
- 標準分數(Z-Score):表示一個數據點與平均值之間的距離
- 小數定標標準化(Decimal Scaling):將資料除以一個適當的冪,以將其縮放到 [-1, 1] 或其他所需範圍。 通常使用 10 的冪進行縮放,例如 10^k,其中 k 是足夠大的值,以便資料被縮放到所需範圍
- TF-IDF(詞頻-逆文檔頻率): 是一種用於文字資料的歸一化方法,用於衡量單字在文件集合中的重要性。 通常使用機器學習庫(如 scikit-learn)來計算 TF-IDF 值
- 不對稱性(Asymmetry):用來描述資料分佈的不對稱程度
- 偏度(Skewness):衡量資料分佈的偏斜程度,正偏斜表示資料右偏,負偏斜表示資料左偏
- 峰度(Kurtosis):衡量資料分佈的尖峰或扁平程度,正峰度表示尖峰,負峰度表示扁平
- 抽樣分佈(Sampling Distribution):從一個總體(或總體分佈)中多次抽取樣本,計算每個樣本的統計量(如平均值、變異數、比例等)後,所得到的分佈
- 中心極限定理(Central Limit Theorem):當從一個母體中隨機抽取多個樣本時,樣本均值的分佈將趨近於常態分配,不論母體分佈是什麼
[【統計機率分配】](https://hackmd.io/@workcata/BkJoaU4ST)
- 標準誤差(Standard Error)
:::
:::warning
筆記中練習的都是 excel func + python code
- 課程、網頁:
- 中華科大 CUSTCourses [【統計學-李柏堅】](https://www.youtube.com/watch?v=sXMOx9Pbpe4&list=PLP1Ynr8cs97tPCMS0jOEYFNJoz7CelIJ5)
- 交大 OCW 公開課程[【統計學(一)(基礎統計) - 工業工程與管理學系 唐麗英老師】](https://www.youtube.com/watch?v=3okbnliWIlU&t=2s)
- Udemy [【Statistics for Data Science and Business Analysis】](https://www.udemy.com/course/statistics-for-data-science-and-business-analysis/?utm_source=adwords&utm_medium=udemyads&utm_campaign=DSA_Catchall_la.EN_cc.ROW&utm_content=deal4584&utm_term=_._ag_88010211481_._ad_535397282061_._kw__._de_c_._dm__._pl__._ti_dsa-41250778272_._li_9040379_._pd__._&matchtype=&gclid=CjwKCAjwsKqoBhBPEiwALrrqiMy7g9P6ZjPz6g4QXJXkRJhSUlR3kmZe9yeE5s2V5_QoLJyyjvObHxoC_HEQAvD_BwE)
- 進階 [【Dr. Shao-Wei Cheng】](http://www.stat.nthu.edu.tw/~swcheng/Teaching/index.html)
- 朋友推薦的書籍:
:::



<br/>
### 基本觀念
### :+1:樣本或群體/母體 (Sample or population) : 樣本是從母體中抽取的一部分數據,用於進行統計分析和推論
>
>群體(Population) N、樣本(Sample) n
<br/>
### :+1:參數(parameter):由「群體」資料所計算之群體表征值=群體的特定數值
假設想知道一家半導體廠,晶片的厚度。隨機抽取200片
群體的厚度平均數 = 參數
<br/>
### :+1:統計量(statistic):由「樣本」資料所計算之樣本表徵值
假設想知道一家半導體廠,晶片的厚度。隨機抽取200片
200片厚度平均數= 統計量
假設想知道一家半導體廠,隨機抽取200片,8片是瑕疵品
8/200=4%=統計量
<br/>
### :+1:常見符號、公式
- 群體
- 群體總體(N)、單一(X)
- 群體平均數(𝜇 ,讀作 mu)

- 群體標準差(𝜎 ,讀作 sigma)

- 群體變異數=標準差的平方(σ2 平方,讀作sigma squared)

- 群體相關係數(ρ, 讀作 rho)
- 群體比例 ( P)
<br/>
- 樣本
- 樣本總體(n)、單一(x)
- 樣本平均數(-x ,讀作 x bar)



- 樣本標準差(s)
n-1是為了進行不偏估計

- 樣本變異數=標準差的平方(s2 平方,讀作s squared)

- 樣本相關係數 ( r)
- 樣本比例 (^p,讀作 p-hat)
<br/>
### :+1:描述性統計(Descriptive Statistics): 總結和描述收集到的數據,例如平均值、中位數、標準差等,或者有人說是「總結變量的特徵」,有助於對數據的整體情況有一個初步的理解

方法:使用各種統計量和圖形工具來呈現資料的摘要訊息,平均值、中位數、眾數、變異數、標準差、分位數、直方圖、箱線圖等
<br/>
### :+1:數值變量(Numerical)
- 定性變數(Qualitative random variables) :
定性變數產生類別資料,即隨機数的各結果不能以數量表示,而僅能依其特性之類別表之
適合用 bar chart(不同類別/時期)、pie chart(單一總量合->切割成不同類別)、pareto diegram(類別型資料,重要少數,瑣細多數。找到少數關鍵原因,大多數問題會跟著改善。橫軸必須是**類別/時間(月份、年份)**,下面詳載次數+百分比+累加百分比;縱軸左邊是**發生次數**,由高到低,縱軸右邊是**累加百分比**)
- 搭配離散隨機變數(Discrete Random Variable)「次數」畫出圖。例如,性別(gender)、國籍(Nationality)、造成產品赞異之可能原因(Causes for variation適合用 bar chart、pie chart、pareto chart。
- 定量變數(Quantitative random variables) :
可以被量化或測量的變數,通常以數值形式表示,身高、體重、年齡、收入等
適合用莖葉圖 stem-leaf display(快速**排序**)、直方圖 histogram(展示資料之分布,長度/分數)、散佈圖 scatter diagram(二維圖,兩個**變數**之間的關係,探討日均溫對冰淇淋銷量影響)、時間序列圖 line chart(資料在**不同時間**的觀測值,橫軸為時間,縱軸為觀測值的**單位數量**)
- 搭配離散隨機變數(Discrete Random Variable):經由計教的方式取得變數之资料。例如,不良品個數(Defcctiveitms)、一份文件之錯誤字数、晶圓上之缺陷點數(0Defectcounts)
- 搭配連續隨機變數(Continuous Random Variable):經由量测的方式取得變資料。例如,重量、高度、溫度


- 分類變量(Categorical)
也稱為類別變量或類別型變量,代表的是不同的類別或類型,通常是以文字形式表示。例如,性別(男、女)、地區(東部、西部、南部、北部)、產品類別(電子產品、食品、服裝)等
PS 「分類變量」和「定性變數」是統計學中描述資料特性的術語,它們之間存在一些差異,但通常用法上可以視為相同

<br/>
### :+1:集中趨勢(Measures of Central Tendency, Location): 用來描述數據集中程度或中心位置的統計指標
- 中位數 Md(Median):將數據排序後位於中間位置的值 *excel: =median(B2:B20)、median(FILTER($B$2:$B$20,$A$2:$A$20=C1)) (要計算欄位,查詢欄位, 查詢條件)
母體奇數 (N+1)/2
母體偶數 N/2 和 N/2+1 平均數
樣本奇數 (n+1)/2
樣本偶數 n/2 和 n/2+1 平均數
```=
import numpy as np
data = [1, 2, 3, 4, 5]
median = np.median(data)
print("中數:", median)
```
- 眾數 Mo(Mode):一組數據中出現頻率最高的值 *excel: =mode.sngl(B2:B20)、mode.mult(FILTER($B$2:$B$20,$A$2:$A$20=C1)) (要計算欄位,查詢欄位, 查詢條件)
```=
from statistics import mode
data = [1, 2, 2, 3, 4, 4, 5]
mode_value = mode(data)
print("眾數:", mode_value)
```
- 平均數(Mean):數據的平均值 *excel: =average(B2:B20)、averageifa(B2:B20,A2:A2O,D1:E1) (要計算欄位,查詢欄位, 查詢條件)
```=
data = [1, 2, 3, 4, 5]
mean = sum(data) / len(data)
print("平均數:", mean)
```
<br/>
### :+1:分散或變異趨勢(Dispersion or Variability): 度量資料分佈中每個資料點與資料集平均值,之間的差異或分散程度
- 全距(Range):資料集的最大值和最小值之間的差距,資料太多或有離群值不適合
```=
假設有以下數據集
data_set = [2, 4, 4, 10, 5, 5, 7, 9]
# 計算資料集的範圍
data_range = max(data_set) - min(data_set)
print(f"數據集的範圍是:{data_range}")
= data_set = [2, 4, 4, 10, 5, 5, 7, 9]
# 對資料集進行排序
sorted_data = sorted(data_set)
# 計算範圍
data_range = sorted_data[-1] - sorted_data[0]
print(f"資料集的範圍為: {data_range}")
```
- 方差(Variance): 每個數據點到平均值的平方差,然後將這些平方差加總,最後除以數據的總個數,是一個衡量數據分散程度的指標*excel: =VAR.S(D2:D100)


```=
import numpy as np
data = [1, 2, 3, 4, 5]
variance = np.var(data)
print("方差:", variance)
```
```=
# 數學公式寫法
假設有以下數據集:[2, 4, 4, 4, 5, 5, 7, 9]
步驟1:計算平均值(均值)
(2 + 4 + 4 + 4 + 5 + 5 + 7 + 9) / 8 = 40 / 8 = 5
步驟2:計算每個數據點與平均值的差異
(2 - 5)² = 9
(4 - 5)² = 1
(4 - 5)² = 1
(4 - 5)² = 1
(5 - 5)² = 0
(5 - 5)² = 0
(7 - 5)² = 4
(9 - 5)² = 16
步驟3:將差異的平方相加
9 + 1 + 1 + 1 + 0 + 0 + 4 + 16 = 32
步驟4:除以數據的總數
32 / 8 = 4
```
- 標準差(Standard Deviation):方差的平方根,也是一個衡量數據分散程度的指標,通常比方差更容易解釋,因為它的數值和原始數據的單位一致
數字分佈越接近平均值,標準差越低,數據越集中;標準差越高,數據越分散 *excel: =STDEV.S(D2:D100)、=STDEV.S(FILTER($B$2:$B$20,$A$2:$A$20=C2))



```=
import scipy.stats as stats
# 定義均值和標準差
mean = 5
std_dev = 2
# 計算正態分佈中的百分位數
percentile_68 = stats.norm.ppf(0.68, loc=mean, scale=std_dev)
percentile_95 = stats.norm.ppf(0.95, loc=mean, scale=std_dev)
percentile_99_7 = stats.norm.ppf(0.997, loc=mean, scale=std_dev)
print(f"68% 的數據點位於 {percentile_68:.2f} 附近")
print(f"95% 的數據點位於 {percentile_95:.2f} 附近")
print(f"99.7% 的數據點位於 {percentile_99_7:.2f} 附近")
```
```=
import numpy as np
data = [1, 2, 3, 4, 5]
std_deviation = np.std(data)
print("標準差:", std_deviation)
```
```=
# 數學公式寫法
承上面題目,標準差為4的平方根= 2
```
- 變異數(Variation): 標準差的平方,每個數據點到平均值的平方差的平均

(1) 離差的平方*機率
(2) 離差的平方的期望值






>PS 變異數(Variance)和方差(Standard Deviation)實際上指的是相同的統計量。兩者都用來衡量數據的分散程度,在一些文獻和課程中,"方差" 一詞可能更常用於描述母體數據,而 "變異數" 則更常用於描述樣本數據。但在實際使用中,這兩個術語通常可以互換使用
>
- 相對變異數(Coefficient of Variation): 比較不同數據集的離散程度。標準差/平均值*100%。將不同資料集的離散程度進行比較,而不會受到其量綱(單位尺度不同)的影響





>練習
>A股票,平均股價100,股價標準差7、B股票,平均股價50,股價標準差5,哪個變動大? B
>
>CVA = 7/100 * 100% = 7%
>CVB = 5/50 * 100% = 10%
- 絕對變異數(Absolute Variance): 每個數據點到平均值的絕對差的平均,然後將這些絕對差加總,最後除以數據的總個數,是一個衡量數據分散程度的指標,考慮的是絕對值,當數據集包含離群值(Outliers)時,絕對變異數不受"極端"離群值的影響


>PS
- Z分數 (z-score) : 代表與標準差的距離,(數字-平均值)/標準差,表示一個特定數據點在數據集中相對於平均值的位置


- 經驗法則(Empirical Law)
常態分佈中
約68% 的數據點會落在平均值加減一個標準差的範圍內 [𝜇-𝜎, 𝜇+𝜎]
95% 的數據點會落在平均值加減兩個標準差的範圍內 [𝜇-2𝜎, 𝜇+2𝜎]
99.7% 的數據點會落 在平均值加減三個標準差的範圍內 [𝜇-3𝜎, 𝜇+3𝜎]

- [z分配表](http://www.cust.edu.tw/mathmet/stat/z-dist.pdf)
假設z-score是0.5,代表接近中間值
z-score是2.5,代表接近最高值
假設平均值為 80.17、標準差為 6.17

- 練習一
已知某學校有6000人,身高分布呈鐘形分配,其平均身高165公分,標準差5分,依照經驗法則,160公分以上的學生約多少人?
6000*(50%+34%) = 5040

- 練習二
已知某學校有6000人,身高分布呈鐘形分配,其平均身高165公分,標175公分以下的學生約多少人?
6000*(50%+34%+13.5%) = 5850

- 練習三 如果是常態分佈,z:0~1,通常會直接查表 [參考](http://www.cust.edu.tw/mathmet/stat/z-dist.pdf)



- 練習四

- 練習五

- 練習六

- 練習七 查z

- 練習八 查z

```=
# python
scipy.stats.norm.ppf()
```
- 柴比雪夫不等式(Chebyshev's inequality):是一種"保守估計"隨機變數與期望值的距離,"不須限制"為鐘型


X−μ 表示一個隨機變數X,與平均數 μ 之差
如果
k=2,兩倍標準差,1-1/4=75% (經驗法則為95%)
k=3,三倍標準差,1-1/9=88.88% (經驗法則為99.7%)
練習

求變異系數(coefficient of variance):


平均數 = 217/13=16.69
標準差 = 4.54
變異係數 = (4.54/16.69) * 100% = 27.2%
使用柴比雪夫不等式(Chebyshev's Theorem)確定包含至少 75% 資料的值範圍:
75%為兩倍標準差
|16.69-(2 * 4.54) , 16.69+(2 * 4.54)| = |7.61 , 25.77|
- 馬可夫不等式(Markov's Inequality): 用來估計一個非負的隨機變量大於等於某個正數的概率

練習

E(X)=60
P(X>=120) <= 60/120
答案為50%
P(X>=75) <= 50/75
答案為66.66%
>PS 從上面可以推斷
>E(X)=𝜇
>P(X>=2𝜇) <= 1/2
>P(X>=3𝜇) <= 1/3
- 柴比雪夫不等式單邊版(Chebyshev's inequality)

練習

P(X>=𝜇+k) <= σ平方/(σ平方+k平方)
題目提供 𝜇=50、σ平方=25,因此k=25
P(X>=50+25) <= 25/(25+625)
答案為 1/26
- 四分位數(Quartiles,QD):數據分為四等分的值,包括第一四分位數、第二四分位數(中位數)和第三四分位數 *excel: 第三四分位數=QUARTILE.INC(B2:B20,3) *excel動態: =QUARTILE.INC(B2:B20,SEQUENCE(5,,0,1)) (列數,行數,起點,間隔)
PS 以盒鬚圖辨認離群值: 超過1.5(Q3-Q1)~3(Q3-Q1)距離內,可當作非常可能之離群值
```=
import numpy as np
data_set = [2, 4, 4, 4, 5, 5, 7, 9]
# 計算第一四分位數
Q1 = np.percentile(data_set, 25)
# 計算第二四分位數(中位數)
Q2 = np.percentile(data_set, 50)
# 計算第三四分位數
Q3 = np.percentile(data_set, 75)
print(f"第一四分位數(Q1):{Q1}")
print(f"第二四分位數(中位數,Q2):{Q2}")
print(f"第三四分位數(Q3):{Q3}")
```
```=
# 數學公式寫法
import numpy as np
data_set = [2, 4, 4, 4, 5, 5, 7, 9]
data_set.sort() # 先排序
n = len(data_set)
# 計算位置索引
index_Q1 = int((n + 1) * 0.25)
index_Q3 = int((n + 1) * 0.75)
# 找到位置索引對應的值
Q1 = data_set[index_Q1 - 1] # 注意索引從0開始,需要減1
Q3 = data_set[index_Q3 - 1]
print(f"第一四分位數(Q1):{Q1}")
print(f"第三四分位數(Q3):{Q3}")
```
- 中四分位距(Interquartile Range,IQR):第三四分位數和第一四分位數之間的距離(Q3-Q1),用於度量數據的變異性。數字越大,數據越鬆散
* excel: =QUARTILE.INC(FILTER($B$2:$B$20,$A$2:$A$20=C2),3)-QUARTILE.INC(FILTER($B$2:$B$20,$A$2:$A$20=C2),1)
```=
IQR = Q3 - Q1
print(f"四分位距(IQR):{IQR}")
```
>PS 如果算RANGE
MAXIFS($B$2:$B$20,$A$2:$A$20,C2)-MINIFS($B$2:$B$20,$A$2:$A$20,C2)
(尋找的數值範圍,條件範圍, 條件)
>PS 箱型圖

- 異常值(Outliers):數據集中明顯偏離其他數據點的。通常,資料集中小於 Q1 - 1.5 * IQR 或大於 Q3 + 1.5 * IQR 的值被視為異常值
```=
# 計算異常值的閾值
lower_threshold = Q1 - 1.5 * IQR
upper_threshold = Q3 + 1.5 * IQR
# 尋找異常值
outliers = [x for x in data_set if x < lower_threshold or x > upper_threshold]
print(f"異常值:{outliers}")
```
- 練習
{4, 7, 13, 16, 21}
平均數 12.2
方差
((4-12.2)**2+(7-12.2)**2+(13-12.2)**2+(16-12.2)**2+(21-12.2)**2)/5 = 33.6
標準差
33.6 開根號 = 5.78
z-score
(16−12.20)/5.78 = 0.66,代表比平均值高出 0.66 個標準差
變異係數
(5.78/12.2) * 100% = 47.38%
全距
21-4=17
Q1 介於 4 和 7 之間
Q3 介於 16 和 21
常態分佈中,約68% 的數據點會落在平均值加減一個標準差的範圍內、95% 的數據點會落在平均值加減兩個標準差的範圍內、99.7% 的數據點會落 在平均值加減三個標準差的範圍內,可以看出 16 位於平均值附近,稍微偏向分佈的右邊
<br/>
### :+1:協方差(Covariance): 用來衡量兩個隨機變數之間關係的統計量。它表示兩個變數的變化程度是否相關。正協方差表示正相關,負協方差表示負相關,而接近零的協方差表示無關
如果協方差為正值,表示 X 和 Y 呈正相關關係,即當一個變數增加時,另一個變數也增加
如果協方差為負值,表示 X 和 Y 呈負相關關係,即當一個變數增加時,另一個變數減少
如果協方差接近零,表示 X 和 Y 之間沒有線性關係


```=
import numpy as np
# 兩個變數的觀察值
X = np.array([1, 2, 3, 4, 5])
Y = np.array([5, 4, 3, 2, 1])
# 計算均值
mean_X = np.mean(X)
mean_Y = np.mean(Y)
# 計算協方差
covariance = np.mean((X - mean_X) * (Y - mean_Y))
print("協方差:", covariance)
```
```=
import numpy as np
import matplotlib.pyplot as plt
# 建立兩個隨機變數 X 和 Y 的範例數據
X = np.array([1, 2, 3, 4, 5])
Y = np.array([2, 3, 5, 4, 6])
# 計算 X 和 Y 的平均值
mean_X = np.mean(X)
mean_Y = np.mean(Y)
# 計算協方差
covariance = np.sum((X - mean_X) * (Y - mean_Y)) / (len(X) - 1)
# 繪製散佈圖
plt.scatter(X, Y, label='散點圖')
# 新增協方差線
plt.plot([mean_X, mean_X], [mean_Y, mean_Y + covariance], color='red', linestyle='--', label='協方差線')
# 新增標籤和圖例
plt.xlabel('X')
plt.ylabel('Y')
plt.legend()
# 顯示圖形
plt.show()
```
### :+1:歸一化 : 將不同資料的數值範圍縮放到相似的尺度,以便更好地進行比較、分析和處理,確保在機器學習和資料分析中具有相同的權重,防止某些特徵對模型產生過大的影響。通常是[0, 1]或[-1, 1]之間
- 取log(對數轉換): 處理數據的偏斜分佈(skewed distribution)或異常值(outliers),可以使偏斜的數據更加對稱,使其更適合應用統計方法,如線性迴歸
- 最小-最大縮放(Min-Max Scaling):將資料線性縮放到指定的範圍,通常是 [0, 1]

```=
import numpy as np
data_set = [2, 4, 4, 4, 5, 5, 7, 9]
# 計算最小值和最大值
min_value = min(data_set)
max_value = max(data_set)
# 最小-最大縮放
scaled_data = [(x - min_value) / (max_value - min_value) for x in data_set]
print(scaled_data)
```
- 標準分數(Z-Score):表示一個數據點與平均值之間的距離

```=
import numpy as np
# 原始資料集
data_set = [2, 4, 4, 4, 5, 5, 7, 9]
# 計算平均值和標準差
mean = np.mean(data_set)
stddev = np.std(data_set)
# 計算每個數據點的 Z-Score
z_scores = [(x - mean) / stddev for x in data_set]
# 列印 Z-Scores
print("原始資料集:", data_set)
print("Z-Scores:", z_scores)
```
```=
# 數學公式寫法
步驟1:計算平均值(平均值)
平均值(μ)= (2 + 4 + 4 + 4 + 5 + 5 + 7 + 9) / 8 = 40 / 8 = 5
步驟2:計算每個數據點與平均值的差
差值 = 資料點 - 平均值
差值= [2-5, 4-5, 4-5, 4-5, 5-5, 5-5, 7-5, 9-5] = [-3, -1, -1, -1, 0, 0, 2, 4]
步驟3:計算差異值的平方
平方 = 差值^2
平方= [(-3)^2, (-1)^2, (-1)^2, (-1)^2, 0^2, 0^2, 2^2, 4^2] = [9 , 1, 1, 1, 0, 0, 4, 16]
步驟4:計算差異值的平方的平均值
平方的平均值(變異數)= (9 + 1 + 1 + 1 + 0 + 0 + 4 + 16) / 8 = 32 / 8 = 4
步驟5:計算標準差
標準差(σ)= 變異數的平方根 = √4 = 2
# 歸一化,每個資料點差值/標準差(σ)
例如,對於第一個資料點(2),它的 Z-Score 是 -3,然後歸一化後的值為 -3 / 2 = -1.5。
```
- 小數定標標準化(Decimal Scaling):將資料除以一個適當的冪,以將其縮放到 [-1, 1] 或其他所需範圍。 通常使用 10 的冪進行縮放,例如 10^k,其中 k 是足夠大的值,以便資料被縮放到所需範圍

```=
data_set = [2, 4, 4, 4, 5, 5, 7, 9]
# 計算資料的最大絕對值
max_abs_value = max(abs(x) for x in data_set)
# 小數定標標準化(以 10 的冪進行縮放)
k = 10 # 選擇適當的 k 值
scaled_data = [x / (10 ** k) for x in data_set]
print(scaled_data)
```
- TF-IDF(詞頻-逆文檔頻率): 是一種用於文字資料的歸一化方法,用於衡量單字在文件集合中的重要性。 通常使用機器學習庫(如 scikit-learn)來計算 TF-IDF 值
TF-IDF 考慮了一個詞(term)在文檔中的出現頻率(TF)和在整個文檔集合中的文檔頻率(DF),通過將這兩者的乘積取倒數,得到一個詞的權重。TF 計算的是一個詞在單一文檔中的出現次數,而 IDF 計算的是這個詞在整個文檔集合中的信息重要性


```=
from sklearn.feature_extraction.text import TfidfVectorizer
# 範例文字數據
documents = ["This is the first document.",
"This document is the second document.",
"And this is the third one.",
"Is this the first document?"]
# 建立 TF-IDF 向量化器
vectorizer = TfidfVectorizer()
# 計算 TF-IDF 值
tfidf_matrix = vectorizer.fit_transform(documents)
# 將 TF-IDF 值轉換為陣列
tfidf_array = tfidf_matrix.toarray()
print(tfidf_array)
```
<br/>
#### :+1:不對稱性(Asymmetry):用來描述資料分佈的不對稱程度
- 偏度(Skewness): 用來描述數據分布形狀的一個指標 *excel: =skew(B2:B20)
正偏斜(Positive Skewness):平均數>中位數時,通常表示資料分佈呈現右偏斜(正偏斜)
負偏斜(Negative Skewness):平均數<中位數時,通常表示資料分佈呈現左偏斜(負偏斜)
零偏(Zero Skewness): 數據分布在平均值兩側大致對稱,則稱為零偏





- 峰度(Kurtosis):樣本峰度係數(Sample Kurtosis Coefficient)用於描述一個樣本數據集的峰度。衡量資料分佈的尖峰或扁平程度,正峰度表示尖峰,低闊峰,負峰度表示扁平,高峽峰


```=
import numpy as np
from scipy.stats import skew, kurtosis
data = [2, 4, 4, 10, 5, 5, 7, 9]
# 計算偏度
data_skew = skew(data)
print(f"資料集的偏度為: {data_skew:.2f}")
# 計算峰度
data_kurtosis = kurtosis(data)
print(f"資料集的峰度為: {data_kurtosis:.2f}")
```
<br/>
### :+1:抽樣分佈(Sampling Distribution):從一個總體(或總體分佈)中多次抽取樣本,計算每個樣本的統計量(如平均值、變異數、比例等)後,所得到的分佈
```=
import numpy as np
import matplotlib.pyplot as plt
# 模擬從常態分佈中抽取多個樣本,並計算樣本平均值的抽樣分佈
population_mean = 100
population_stddev = 15
num_samples = 1000
sample_size = 30
sample_means = []
for _ in range(num_samples):
sample = np.random.normal(population_mean, population_stddev, size=sample_size)
sample_mean = np.mean(sample)
sample_means.append(sample_mean)
# 繪製樣本平均數的抽樣分佈直方圖
plt.hist(sample_means, bins=30, density=True, alpha=0.5, color='b')
plt.xlabel('Sample Mean')
plt.ylabel('Probability Density')
plt.title('Sampling Distribution of Sample Means')
plt.show()
```
```=
# 數學公式寫法
承上面題目
import numpy as np
import matplotlib.pyplot as plt
# 給定的數據集
data_set = [2, 4, 4, 4, 5, 5, 7, 9]
# 模擬抽樣的次數
num_samples = 1000
# 每個樣本的大小
sample_size = 3 # 這裡假設每個樣本的大小是3,你可以根據需要調整
# 存儲樣本均值
sample_means = []
# 進行抽樣和計算樣本均值
for _ in range(num_samples):
sample = np.random.choice(data_set, size=sample_size, replace=True)
sample_mean = np.mean(sample)
sample_means.append(sample_mean)
# 繪製樣本均值的抽樣分佈直方圖
plt.hist(sample_means, bins=30, density=True, alpha=0.5, color='b')
plt.xlabel('Sample Mean')
plt.ylabel('Probability Density')
plt.title('Sampling Distribution of Sample Means')
plt.show()
```


<br/>
- 中心極限定理(Central Limit Theorem):從一個母體中隨機抽取多個樣本時,樣本均值的分佈將趨近於常態分配,不論母體分佈是什麼


(p\*n) 和 (1-p)\*n 都必須大於 5
```=
import numpy as np
import matplotlib.pyplot as plt
# 模擬從均勻分佈中抽取多個樣本,並計算樣本平均值
population = np.random.uniform(0, 1, 1000)
sample_means = []
num_samples = 1000
sample_size = 30
for _ in range(num_samples):
sample = np.random.choice(population, size=sample_size)
sample_mean = np.mean(sample) # 算出樣本的平均值
sample_means.append(sample_mean)
# 繪製樣本平均數的直方圖
plt.hist(sample_means, bins=30, density=True, alpha=0.5, color='b')
plt.xlabel('Sample Mean')
plt.ylabel('Probability Density')
plt.title('Central Limit Theorem Demonstration')
plt.show()
```
```=
# 數學公式寫法
承上面題目
import numpy as np
import matplotlib.pyplot as plt
# 給定的資料集
data_set = [2, 4, 4, 4, 5, 5, 7, 9]
# 模擬抽取樣本的次數
num_samples = 1000
# 每個樣本的大小
sample_size = 30
# 儲存樣本平均值
sample_means = []
# 計算總體平均數和標準差
population_mean = np.mean(data_set)
population_stddev = np.std(data_set)
# 模擬抽樣和計算樣本平均值
for _ in range(num_samples):
sample = np.random.choice(data_set, size=sample_size, replace=True)
sample_mean = np.mean(sample)
sample_means.append(sample_mean)
# 繪製樣本平均數的抽樣分佈直方圖
plt.hist(sample_means, bins=30, density=True, alpha=0.5, color='b')
plt.xlabel('Sample Mean')
plt.ylabel('Probability Density')
plt.title('Sampling Distribution of Sample Means')
plt.show()
```
- 標準誤差(Standard Error)
= 標準差/樣本量的平方根
用來確定【樣本統計量】與【總體參數估計值】之間的偏差程度,準確誤差的值越小,表示估計值的精度越高
```=
import numpy as np
# 生成一組隨機樣本
np.random.seed(0)
sample = np.random.normal(loc=10, scale=2, size=100)
# 計算樣本平均值和標準誤差
sample_mean = np.mean(sample)
standard_error = np.std(sample) / np.sqrt(len(sample))
print("樣本平均值:", sample_mean)
print("標準誤差:", standard_error)
```