1. 程式人生 > 其它 >拓端tecdat|R語言平滑演算法LOESS區域性加權迴歸、三次樣條、變化點檢測擬合電視節目《白宮風雲》線上收視率

拓端tecdat|R語言平滑演算法LOESS區域性加權迴歸、三次樣條、變化點檢測擬合電視節目《白宮風雲》線上收視率

原文連結:http://tecdat.cn/?p=24067

原文出處:拓端資料部落公眾號

此示例基於電視節目的線上收視率。我們將從抓取資料開始。

  1. # 載入軟體包。
  2. packages <- c("gplot2", "MASS", "reshpe", "splnes",
  3. "XML")

分析的系列是亞倫·索爾金 (Aaron Sorkin) 的白宮風雲

  1. if (!fle.eiss(fie)) {
  2. # 解析HTML內容。
  3. html <- htmlPrse(lis?si=17ectn=a")
  4. # 根據id選擇表格。
  5. tml <- pahppl(html, //tal[@d='Tle']"[1] ?
  6. # 轉換為資料集。
  7. da <- reHTML(hml)
  8. # 第一個資料行。
  9. head(da )
  10. # 儲存本地副本。
  11. write.csv(ata[, -3], fle)
  12. # 讀取本地副本
  13. daa <- red.sv(fie)
  14. # 檢查結果
  15. str(dat)

Mean是每集的平均評分,所以我們有一個引數,Count是每集的投票數,所以我們有一個樣本大小。使用標準誤差方程,我們將計算每個評分的“誤差幅度”。請注意,由於有幾集收視率非常高,因此收視率分佈不正常。

  1. # 計算季
  2. daa$saon <- 1 + (daX - 1)%/%22
  3. # 特殊情況
  4. at$sasn[which(dta$sesn > 7)] <- c(7, NA)
  5. # 因子變數
  6. daa$saon <- fator(aa$sesn)

我們對資料採取的最後一步是新增季編號,以便以後能夠在繪圖上區分它們。除了兩個特例(最後一季有 23 集,一個節目是電影特輯)外,白宮風雲每一季都有 22 集。我們使用除以 22 的餘數來計算季,修復特殊情況,並將變數分解為繪圖目的。

  1. # 計算季
  2. asaon <- 1 + (aX - 1)%/%22
  3. # 特殊情況
  4. dtseson[wich(dtsasn > 7)] <- c(7, A)
  5. # 因子變數
  6. dtseson <- fctor(dasasn)

最後的圖使用 95% 和 99% 的置信區間來視覺化不確定性。

  1. qlot(dta =dat, x = X, y = mu, clr =sasn, gem = "pont") +
  2. genge(es(yin = u - 1.96*se, ymx = u + 1.96*se), alpa = .5) +
  3. golie(as(yin =mu - 2.58*se, yax = mu + 2.58*e), apa = .5) +

該圖對於每個季節的平均收視率會更有用,這些收視率很容易用該ddply()函式檢索。還計算了最小和最大集數,以便能夠繪製每個季節的水平段。由於我們將之前的繪圖儲存為ggplot2物件,因此新增線條只需要對額外的圖形元素進行編碼並將其新增到儲存的元素之上。

  1. # 計算季平均值。
  2. men <- dply(daa,.(easn), summrs,
  3. ma = mean),
  4. xmi= in(X,
  5. xmx = ma(X)
  6. # 將平均值新增到繪圖中。
  7. g + go_eme(daa = eas,
  8. as( xmin, max, = mean, en= man))

變化點檢測演算法

如果您的目標是找到系列中的突然變化,請使用變化點檢測演算法。

  1. # PELT演算法計算變化點。
  2. p <- tmean(atamu, 'PELT')
  3. # 提取結果。
  4. xmin <- c(0, max[-legh(xmax)])
  5. # 繪圖。
  6. gem_segnt(dat = eg)

平滑演算法:LOESS(區域性加權迴歸)和三次樣條

現在讓我們平滑這個系列。基本圖都將使用相同的資料,我們將在其上疊加一條通過不同方法計算的趨勢線。

  1. # 繪圖
  2. plot(data
  3. x = X,
  4. y = mu,
  5. alpa = I0.5),
  6. gom = line")

平滑資料的最簡單方法是使用區域性多項式,我們將其應用於每個季節的分數,然後應用於它們的去趨勢值。更復雜的平滑方法使用splines。它僅用於最後一個圖中。

  1. # 每一季的LOESS平滑
  2. LOESS(se = FALSE) +
  3. goln(y = tmu,neyp= dhe"+
  4. as(colo = sason)
  1. # 對去趨勢的數值進行LOESS平滑處理
  2. smooth(se = FALSE) +
  3. eoin(es =memu)), itype = ") +
  1. # 立方樣條
  2. g +
  3. smooth( "m", ns(x, 8)

三次樣條提供的資訊與我們從變化點檢測中瞭解到的情況幾乎相同:該系列有三個時期,是由於觀眾收視率的一次下降。

  1. # 三次樣條和變化點
  2. gmoth(method = ~ ns(x, 8))

最受歡迎的見解

1.R語言多元Logistic邏輯迴歸 應用案例

2.面板平滑轉移回歸(PSTR)分析案例實現

3.matlab中的偏最小二乘迴歸(PLSR)和主成分迴歸(PCR)

4.R語言泊松Poisson迴歸模型分析案例

5.R語言混合效應邏輯迴歸Logistic模型分析肺癌

6.r語言中對LASSO迴歸,Ridge嶺迴歸和Elastic Net模型實現

7.R語言邏輯迴歸、Naive Bayes貝葉斯、決策樹、隨機森林演算法預測心臟病

8.python用線性迴歸預測股票價格

9.R語言用邏輯迴歸、決策樹和隨機森林對信貸資料集進行分類預測

▍關注我們 【大資料部落】第三方資料服務提供商,提供全面的統計分析與資料探勘諮詢服務,為客戶定製個性化的資料解決方案與行業報告等。 ▍諮詢連結:http://y0.cn/teradat ▍聯絡郵箱:[email protected]