『壹』 如何用r語言函數包分析自己的數據
library(*****)
你相應的包應該到R官方網站下載安裝,然後用上面的函數載入就可以了.
祝你愉快,滿意請採納哦
『貳』 用R語言進行關聯分析
用R語言進行關聯分析
關聯是兩個或多個變數取值之間存在的一類重要的可被發現的某種規律性。關聯分析目的是尋找給定數據記錄集中數據項之間隱藏的關聯關系,描述數據之間的密切度。
幾個基本概念
1. 項集
這是一個集合的概念,在一籃子商品中的一件消費品即為一項(Item),則若干項的集合為項集,如{啤酒,尿布}構成一個二元項集。
2. 關聯規則
一般記為的形式,X為先決條件,Y為相應的關聯結果,用於表示數據內隱含的關聯性。如:,表示購買了尿布的消費者往往也會購買啤酒。
關聯性強度如何,由三個概念——支持度、置信度、提升度來控制和評價。
例:有10000個消費者購買了商品,其中購買尿布1000個,購買啤酒2000個,購買麵包500個,同時購買尿布和麵包800個,同時購買尿布和麵包100個。
3. 支持度(Support)
支持度是指在所有項集中{X, Y}出現的可能性,即項集中同時含有X和Y的概率:
該指標作為建立強關聯規則的第一個門檻,衡量了所考察關聯規則在「量」上的多少。通過設定最小閾值(minsup),剔除「出鏡率」較低的無意義規則,保留出現較為頻繁的項集所隱含的規則。
設定最小閾值為5%,由於{尿布,啤酒}的支持度為800/10000=8%,滿足基本輸了要求,成為頻繁項集,保留規則;而{尿布,麵包}的支持度為100/10000=1%,被剔除。
4. 置信度(Confidence)
置信度表示在先決條件X發生的條件下,關聯結果Y發生的概率:
這是生成強關聯規則的第二個門檻,衡量了所考察的關聯規則在「質」上的可靠性。相似的,我們需要對置信度設定最小閾值(mincon)來實現進一步篩選。
具體的,當設定置信度的最小閾值為70%時,置信度為800/1000=80%,而的置信度為800/2000=40%,被剔除。
5. 提升度(lift)
提升度表示在含有X的條件下同時含有Y的可能性與沒有X這個條件下項集中含有Y的可能性之比:
該指標與置信度同樣衡量規則的可靠性,可以看作是置信度的一種互補指標。
R中Apriori演算法
演算法步驟:
1. 選出滿足支持度最小閾值的所有項集,即頻繁項集;
2. 從頻繁項集中找出滿足最小置信度的所有規則。
> library(arules) #載入arules包
> click_detail =read.transactions("click_detail.txt",format="basket",sep=",",cols=c(1)) #讀取txt文檔(文檔編碼為ANSI)
> rules <- apriori(click_detail, parameter =list(supp=0.01,conf=0.5,target="rules")) #調用apriori演算法
> rules
set of419 rules
> inspect(rules[1:10]) #查看前十條規則
解釋
1) library(arules):載入程序包arules,當然如果你前面沒有下載過這個包,就要先install.packages(arules)
2) click_detail =read.transactions("click_detail.txt",format="basket",sep=",",cols=c(1)):讀入數據
read.transactions(file, format =c("basket", "single"), sep = NULL,
cols = NULL, rm.plicates =FALSE, encoding = "unknown")
file:文件名,對應click_detail中的「click_detail.txt」
format:文件格式,可以有兩種,分別為「basket」,「single」,click_detail.txt中用的是basket。
basket: basket就是籃子,一個顧客買的東西都放到同一個籃子,所有顧客的transactions就是一個個籃子的組合結果。如下形式,每條交易都是獨立的。
文件形式:
item1,item2
item1
item2,item3
讀入後:
items
1 {item1,
item2}
2 {item1}
3 {item2,
item3}
single: single的意思,顧名思義,就是單獨的交易,簡單說,交易記錄為:顧客1買了產品1, 顧客1買了產品2,顧客2買了產品3……(產品1,產品2,產品3中可以是單個產品,也可以是多個產品),如下形式:
trans1 item1
trans2 item1
trans2 item2
讀入後:
items transactionID
1 {item1} trans1
2 {item1,
item2} trans2
sep:文件中數據是怎麼被分隔的,默認為空格,click_detail裡面用逗號分隔
cols:對basket, col=1,表示第一列是數據的transaction ids(交易號),如果col=NULL,則表示數據裡面沒有交易號這一列;對single,col=c(1,2)表示第一列是transaction ids,第二列是item ids
rm.plicates:是否移除重復項,默認為FALSE
encoding:寫到這里研究了encoding是什麼意思,發現前面txt可以不是」ANSI」類型,如果TXT是「UTF-8」,寫encoding=」UTF-8」,就OK了.
3) rules <- apriori(click_detail,parameter = list(supp=0.01,conf=0.5,target="rules")):apriori函數
apriori(data, parameter = NULL, appearance = NULL, control = NULL)
data:數據
parameter:設置參數,默認情況下parameter=list(supp=0.1,conf=0.8,maxlen=10,minlen=1,target=」rules」)
supp:支持度(support)
conf:置信度(confidence)
maxlen,minlen:每個項集所含項數的最大最小值
target:「rules」或「frequent itemsets」(輸出關聯規則/頻繁項集)
apperence:對先決條件X(lhs),關聯結果Y(rhs)中具體包含哪些項進行限制,如:設置lhs=beer,將僅輸出lhs含有beer這一項的關聯規則。默認情況下,所有項都將無限制出現。
control:控制函數性能,如可以設定對項集進行升序sort=1或降序sort=-1排序,是否向使用者報告進程(verbose=F/T)
補充
通過支持度控制:rules.sorted_sup = sort(rules, by=」support」)
通過置信度控制:rules.sorted_con = sort(rules, by=」confidence」)
通過提升度控制:rules.sorted_lift = sort(rules, by=」lift」)
Apriori演算法
兩步法:
1. 頻繁項集的產生:找出所有滿足最小支持度閾值的項集,稱為頻繁項集;
2. 規則的產生:對於每一個頻繁項集l,找出其中所有的非空子集;然後,對於每一個這樣的子集a,如果support(l)與support(a)的比值大於最小可信度,則存在規則a==>(l-a)。
頻繁項集產生所需要的計算開銷遠大於規則產生所需的計算開銷
頻繁項集的產生
幾個概念:
1, 一個包含K個項的數據集,可能產生2^k個候選集
2,先驗原理:如果一個項集是頻繁的,則它的所有子集也是頻繁的(理解了頻繁項集的意義,這句話很容易理解的);相反,如果一個項集是非頻繁的,則它所有子集也一定是非頻繁的。
3基於支持度(SUPPORT)度量的一個關鍵性質:一個項集的支持度不會超過它的子集的支持度(很好理解,支持度是共同發生的概率,假設項集{A,B,C},{A,B}是它的一個自己,A,B,C同時發生的概率肯定不會超過A,B同時發生的概率)。
上面這條規則就是Apriori中使用到的,如下圖,當尋找頻繁項集時,從上往下掃描,當遇到一個項集是非頻繁項集(該項集支持度小於Minsup),那麼它下面的項集肯定就是非頻繁項集,這一部分就剪枝掉了。
一個例子(網路到的一個PPT上的):
當我在理解頻繁項集的意義時,在R上簡單的復現了這個例子,這里採用了eclat演算法,跟apriori應該差不多:
代碼:
item <- list(
c("bread","milk"),
c("bread","diaper","beer","eggs"),
c("milk","diaper","beer","coke"),
c("bread","milk","diaper","beer"),
c("bread","milk","diaper","coke")
)
names(item) <- paste("tr",c(1:5),sep = "")
item
trans <- as(item,"transactions") #將List轉為transactions型
rules = eclat(trans,parameter = list(supp = 0.6,
target ="frequent itemsets"),control = list(sort=1))
inspect(rules) #查看頻繁項集
運行後結果:
>inspect(rules)
items support
1{beer,
diaper} 0.6
2{diaper,
milk} 0.6
3{bread,
diaper} 0.6
4{bread,
milk} 0.6
5{beer} 0.6
6{milk} 0.8
7{bread} 0.8
8{diaper} 0.8
以上就是該例子的所有頻繁項集,然後我發現少了{bread,milk,diaper}這個項集,回到例子一看,這個項集實際上只出現了兩次,所以是沒有這個項集的。
規則的產生
每個頻繁k項集能產生最多2k-2個關聯規則
將項集Y劃分成兩個非空的子集X和Y-X,使得X ->Y-X滿足置信度閾值
定理:如果規則X->Y-X不滿足置信度閾值,則X』->Y-X』的規則一定也不滿足置信度閾值,其中X』是X的子集
Apriori按下圖進行逐層計算,當發現一個不滿足置信度的項集後,該項集所有子集的規則都可以剪枝掉了。
『叄』 如何在r語言中抓取股票數據並分析論文
用quantomd包
然後getsymbols函數
分析論文 要看你研究方向
如果是看影響因素 一般回歸就行
如果看股票波動和預測 可能需要時間序列
『肆』 R語言相關性分析圖。想知道怎麼分析這些數據
框內的數字是行變數和列變數之間的相關系數R,相關系數R絕對值越大,顏色越深(紅正,藍負)。統計學中,P值越小相關性越顯著,一般來說 一個*代表顯著相關(P值為0.01,選取不同參數可能不一樣)、兩個**代表極顯著相關(P值為0.001)、三個***代表極極顯著相關(P值為0.0001). 圖中還可以看出,相關系數R的絕對值0.67(變數P50與T之間)以上的都顯著相關,至少一個*。符合一般關於相關系數R值的顯著性統計。
『伍』 如何用R語言的quantmod包獲取一系列股票的歷史日線數據
我舉個例子供你參考:
> install.packages('quantmod') # 安裝安裝quantmod包
> require(quantmod)#引用quantmod包
> getSymbols("GOOG",src="yahoo",from="2013-01-01", to='2013-04-24') #從雅虎財經獲取google的股票數據
> chartSeries(GOOG,up.col='red',dn.col='green') #顯示K線圖
『陸』 R語言怎麼把股票日收盤價轉換成對數收益率
知道一系列收盤價向量X,length=1000,求對數收益率的R語言代碼
acf(int[,2], lag.max = 15,type = "correlation", plot = TRUE,main='int monthly
acf(int.l[,2], lag.max = 15,type = "correlation", plot = TRUE,main='int monthly
log return')
Box.test(int[,2], lag = 5, type = "Ljung-Box")
Box.test(int[,2], lag = 10, type = "Ljung-Box")
Box.test(int.l[,2], lag = 5, type = "Ljung-Box")
Box.test(int.l[,2], lag = 10, type = "Ljung-Box")
運行結錯誤辦
> int <- read.table("d-intc7208.txt", head=T)
錯誤於file(file, "rt") : 打鏈結
外: 警告信息:
In file(file, "rt") :
打文件'd-intc7208.txt': No such file or directory
+ acf(int.l[,2], lag.max = 15,type = "correlation", plot = TRUE,main='int monthly
錯誤: 意外符號 in:
"
acf(int.l[,2], lag.max = 15,type = "correlation", plot = TRUE,main='int"
> log return')
錯誤: 意外符號 in "log return"
『柒』 基於r語言的dea分析的分析結果怎麼看
方法/步驟
1.錄入原始數據。如圖所示,原始數據一般採用excel表格來錄入,第一列為決策單元序列,比如公司、行業等;後續各列依次是產出和投入變數,切忌產出變數一定要在投入變數前面。
2.分析效率情況。如圖所示,將原始數據的格式進行統一調整之後,導入deap分析軟體中,設定好相應的程序和命令後,即可運行出數據分析的結果。其中firm是公司序號,crste是技術效率,vrste是純技術效率,scale是規模效率,最後一列是規模報酬的狀態,irs是規模報酬遞增,drs是規模報酬遞減,-是規模報酬不變。
3
2.分析冗餘情況。如圖所示,DEA數據分析結果會分別給出投入、產出的冗餘量,其中產出冗餘數值是表示產出少了多少,而投入冗餘則是表示投入多了多少。
4
4.分析參考單元。如圖所示,peers表示的是可以作為效率改進參照的公司序號。由結果可見,5和13的決策單元的效率值為一,這樣其他公司以此作為參照,對投入產出量進行調整,便可實現DEA有效。
『捌』 數據分析師是干什麼之R語言數據可視化詳細介紹
什麼是數據分析?
不知道題主是否區分數據分析與數據挖掘,前者偏向於業務分析,後者偏向於資料庫演算法。如果題主只是想問問什麼是數據分析,大概談一談近年來的對數據分析的理解吧!
一句話概括下數據分析:藉助數據來指導決策,而不是拍腦袋!傳統行業的決策過多依賴於領導人得眼光和洞察力,而數據分析要做的事,就是把這些眼光和洞察力轉化為人人可讀的數字!
這里細分一下數據分析的框架:明確分析目標、數據收集、數據清理、數據分析、數據報告、執行與反饋。
1.首先是數據分析的目的性極強
區別於數據挖掘的找關聯、分類、聚類,數據分析更傾向於解決現實中的問題。我想解決什麼問題?通過這次的分析能讓我產生什麼決策?比如是否在某個高校舉辦一場活動,是否把我們的補貼政策再增加10元等等,數據分析的目的性極強。
2.數據收集
數據分析區別於數據挖掘的第一點就是數據來源。數據分析的數據可能來源於各種渠道,資料庫、信息採集表、走訪等等各種形式的數據,只要是和分析目標相關,都可以收集。而數據挖掘則偏向於資料庫數據的讀取。
3.數據清理
由於數據分析的數據來源相比於數據挖掘的直接從資料庫調取,數據分析的數據更加雜亂無章,你可能是從別人的分析報告里找數據,從網路上搜索數據,這些數據的格式、欄位都不統一,在這里你需要根據你的目的進行歸類、整合。
4.數據分析
數據分析是全流程最重要的過程了!這里最重要的事情是:時刻想著你的目標是什麼?比如了解某個時間段的交易狀況,你要根據這個目標做同比、環比等等...這一塊的方法極多,內容極大。由於題主只是想了解數據分析是什麼,這里就不做過多的闡述。
5.數據報告
數據報告就是闡述你的結果嘛!你可以搞一堆大家看不懂的公式什麼的證明你的專業性,但是這里需要你用最通俗易懂的語言告訴你的領導:做這件事有80%的概率收獲100W。OK!就是這么簡單!
6.執行與反饋
就是開始幹活嘛!同時幹完活後需要用數據監測是否達到既定目標?如果達到了,關鍵因素是什麼?如果沒達到,問題出在哪裡?
『玖』 如何用R語言提取股票行情數據
最上邊一行菜單欄倒數第二個「高級」-「關聯任務定義」-選取最右邊從上到下第二個按鈕,找到2009年決算任務安裝路徑-確定。 然後 最上邊一行菜單欄正數第二個「錄入」-「上年數據提取」即可 提取完了,注意修改與去年不同的科目代碼!
『拾』 R語言基本數據分析
R語言基本數據分析
本文基於R語言進行基本數據統計分析,包括基本作圖,線性擬合,邏輯回歸,bootstrap采樣和Anova方差分析的實現及應用。
不多說,直接上代碼,代碼中有注釋。
1. 基本作圖(盒圖,qq圖)
#basic plot
boxplot(x)
qqplot(x,y)
2. 線性擬合
#linear regression
n = 10
x1 = rnorm(n)#variable 1
x2 = rnorm(n)#variable 2
y = rnorm(n)*3
mod = lm(y~x1+x2)
model.matrix(mod) #erect the matrix of mod
plot(mod) #plot resial and fitted of the solution, Q-Q plot and cook distance
summary(mod) #get the statistic information of the model
hatvalues(mod) #very important, for abnormal sample detection
3. 邏輯回歸
#logistic regression
x <- c(0, 1, 2, 3, 4, 5)
y <- c(0, 9, 21, 47, 60, 63) # the number of successes
n <- 70 #the number of trails
z <- n - y #the number of failures
b <- cbind(y, z) # column bind
fitx <- glm(b~x,family = binomial) # a particular type of generalized linear model
print(fitx)
plot(x,y,xlim=c(0,5),ylim=c(0,65)) #plot the points (x,y)
beta0 <- fitx$coef[1]
beta1 <- fitx$coef[2]
fn <- function(x) n*exp(beta0+beta1*x)/(1+exp(beta0+beta1*x))
par(new=T)
curve(fn,0,5,ylim=c(0,60)) # plot the logistic regression curve
3. Bootstrap采樣
# bootstrap
# Application: 隨機采樣,獲取最大eigenvalue占所有eigenvalue和之比,並畫圖顯示distribution
dat = matrix(rnorm(100*5),100,5)
no.samples = 200 #sample 200 times
# theta = matrix(rep(0,no.samples*5),no.samples,5)
theta =rep(0,no.samples*5);
for (i in 1:no.samples)
{
j = sample(1:100,100,replace = TRUE)#get 100 samples each time
datrnd = dat[j,]; #select one row each time
lambda = princomp(datrnd)$sdev^2; #get eigenvalues
# theta[i,] = lambda;
theta[i] = lambda[1]/sum(lambda); #plot the ratio of the biggest eigenvalue
}
# hist(theta[1,]) #plot the histogram of the first(biggest) eigenvalue
hist(theta); #plot the percentage distribution of the biggest eigenvalue
sd(theta)#standard deviation of theta
#上面注釋掉的語句,可以全部去掉注釋並將其下一條語句注釋掉,完成畫最大eigenvalue分布的功能
4. ANOVA方差分析
#Application:判斷一個自變數是否有影響 (假設我們喂3種維他命給3頭豬,想看喂維他命有沒有用)
#
y = rnorm(9); #weight gain by pig(Yij, i is the treatment, j is the pig_id), 一般由用戶自行輸入
#y = matrix(c(1,10,1,2,10,2,1,9,1),9,1)
Treatment <- factor(c(1,2,3,1,2,3,1,2,3)) #each {1,2,3} is a group
mod = lm(y~Treatment) #linear regression
print(anova(mod))
#解釋:Df(degree of freedom)
#Sum Sq: deviance (within groups, and resials) 總偏差和
# Mean Sq: variance (within groups, and resials) 平均方差和
# compare the contribution given by Treatment and Resial
#F value: Mean Sq(Treatment)/Mean Sq(Resials)
#Pr(>F): p-value. 根據p-value決定是否接受Hypothesis H0:多個樣本總體均數相等(檢驗水準為0.05)
qqnorm(mod$resial) #plot the resial approximated by mod
#如果qqnorm of resial像一條直線,說明resial符合正態分布,也就是說Treatment帶來的contribution很小,也就是說Treatment無法帶來收益(多喂維他命少喂維他命沒區別)
如下面兩圖分別是
(左)用 y = matrix(c(1,10,1,2,10,2,1,9,1),9,1)和
(右)y = rnorm(9);
的結果。可見如果給定豬吃維他命2後體重特別突出的數據結果後,qq圖種resial不在是一條直線,換句話說resial不再符合正態分布,i.e., 維他命對豬的體重有影響。