一、分析資料
變項:
Sepal length:花萼長度(cm)
Sepal width:花萼寬度(cm)
Petal length:花瓣長度(cm)
Petal width:花瓣寬度(cm)
Species:花的種類-(setosa:山鳶尾花; versicolor:變色鳶尾花; virginica:維吉尼亞鳶尾花)
讀入資料:
二、資料初勘:
透過summary函數得到每一個變項的分布情形(包含Min:最小值、1st Qu.:第一四分位數、Median:中位數、Mean:平均數、3rd Qu.:第三四分位數、Max:最大值),共150個樣本(setosa:山鳶尾, n=50; versicolor:變色鳶尾,n=50; virginica:維吉尼亞鳶尾,n=50)
透過head(資料集名稱, 呈現幾筆資料)函數可以去指定要呈現的資料,範例是呈現前十筆的資料
筆者進一步透過”ggplot2” package中的ggplot來繪製圖形,其中會使用”gridExtra” package將圖形給組合再一起,方便視覺化的比較以及呈現。
筆者分別將花萼長度(X軸)、花萼寬度(Y軸); 花瓣長度(X軸)、花瓣寬度(Y軸)繪製兩張散布圖,其中資料點用花的種類做分類,因此圖上會有三種形狀的資料點作為標示是哪一種花,從散布圖可以初步看到花瓣長度(Petal length)以及花瓣寬度(Petal width)似乎可以將花的種類做有效分類,不同類型的花似乎不太會重疊,由此可以下一個初步結論,花瓣長度以及寬度似乎對於辨識花的種類有很大的幫助,但花萼寬度與長度似乎幫助不大。
三、建置LDA模型:
為了要建置LDA模型,必須要下載”MASS” package並載入,建置模型所需的Y分類變項為花的種類(Species),”~.”代表將資料中除了花的種類以外的變項拿來建模,當然語法也可以把每一個變項給列出來,”lda(Species~Sepal.Length+Sepal.Width+Petal.Length+Petal.Width, data=data)”。
四、模型結果呈現
參數說明:
* Prior probabilities of groups: 是用來指定分組變項每組出現的機率(意及花的種類出現的頻率,是一種先驗機率),如果沒有特別設定的話,R會根據資料實際分類變項的分布情形去計算。
* Group means: 代表不同花種類下參數的平均值
* Coefficients of linear discriminants: 是經過LDA模型的結果,將4個維度(4個變項)的資料降維成兩個成分(LD1, LDA2)
* Proportion of trace: 兩個成分占的權重(用作分類功能,能解釋資料的變異情形的比例),其中第一個成分占99.1%,這也代表第一個成分能解釋資料大部分的變異情形,其中根據Coefficients of linear discriminants也可以發現花瓣寬度以及長度的係數較大(不考慮正負的話),因此也可以呼應一開始筆者畫散步圖時候花瓣長度以及寬度對於辨識花的種類有很大的幫助。
五、參考資料:
#R code
summary(iris)
#將R內建iris資料另存成一個data(資料集名稱)
data <- iris
head(data,10)
#讓R可以直接使用資料的變項,不須宣告是哪一個資料
attach(data)
#繪製散佈圖,觀察數據分布
library(ggplot2)
#將圖形組合
library(gridExtra)
plot1 <- ggplot(data = data , aes(x = Sepal.Length , y = Sepal.Width ,
shape = Species ,color = Species)) + geom_point(size=3)
plot2 <- ggplot(data = data , aes(x = Petal.Length , y = Petal.Width ,
shape = Species ,color = Species)) + geom_point(size=3)
grid.arrange(plot1, plot2, ncol=2)
#產生LDA模型
library(MASS)
Lda.model <- lda(Species~., data=data)
print(Lda.model)