㈠ 如何用R語言提取股票行情數據
最上邊一行菜單欄倒數第二個「高級」-「關聯任務定義」-選取最右邊從上到下第二個按鈕,找到2009年決算任務安裝路徑-確定。 然後 最上邊一行菜單欄正數第二個「錄入」-「上年數據提取」即可 提取完了,注意修改與去年不同的科目代碼!
㈡ 如何用R語言提取股票行情數據
你好,關於股票價格有關的開盤價格,當日最高價格,當日最低價格,收盤價格,股票交易量;和調整後的價格;
DIA.Open 當日開盤價格
DIA.High 當日最高價格
DIA.Low 當日最低價格
DIA.Close 當日收盤價格
DIA.Volume 當日股票交易量
DIA.Adjusted 當日調整後的價格
㈢ 如何在r語言中抓取股票數據並分析論文
用quantomd包
然後getsymbols函數
分析論文 要看你研究方向
如果是看影響因素 一般回歸就行
如果看股票波動和預測 可能需要時間序列
㈣ 如何用r軟體對給定數據進行回歸分析(不能用lm函數)
可以試著探索一下summary(lm(y~x))到底是什麼。 首先看一下summary(lm(y~x))是什麼數據類型: > m class(summary(m)) [1] "summary.lm" #可以看到,lm的結果是一個"summary.lm" 對象。這有些顯而易見。好吧,繼續探索。 R語言中所有的對象都建立在一些native data structures之上,那麼summary(lm(y~x)的native data structure是什麼呢?可以用mode()命令查看。
㈤ 如何用R 語言 建立 股票價格的時間序列
在下想用R語言對股票價格進行時間序列分析。
問題出在第一步,如何將股票價格轉換為時間序列。
我想用的語句是 pri <- ts (data, start=(), frequency= )
但是我不知道frequency 項該如何填?
因為股票的交易日是一周五天的。 那麼這個frequency 該如何設置呢?
我知道通常frequency= 12 為月度數據,frequency= 4 為季度數據,frequency= 1 為年度數據 但日數據怎麼寫我就不知道了
初學R語言,還望各位大俠多多幫助。
㈥ r語言如何數據分析
r語言數據分析是查看數據的結構、類型,數據處理。根據查詢相關資料信息顯示:R語言是一個開源、跨平台的科學計算和統計分析軟體包,具有豐富多樣、強大的的統計功能和數據分析功能,數據可視化可以繪制直方圖、箱型圖、小提琴圖等展示分數的分布情況可以通過散點圖和線性擬合來展示分數和年齡之間的關系。
㈦ 【R語言入門與數據分析-5】 數據分析實戰
老師的吐槽大會,樂死我了。hhh
regression,通常指用一個或者多個預測變數,也稱自變數或者解釋變數,來預測響應變數,也稱為因變數、效標變數或者結果變數的方法
存在多個變數
AIC 考慮模型統計擬合度、用來擬合的參數數目
AIC值越小,越好
更多的變數:
圖一:是否呈線性關系, 是
圖二:是否呈正態分布,一條直線,正態分布
圖三:位置與尺寸圖,描述同方差性,如果方差不變,水平線周圍的點應該是隨機分布
圖四:殘差與杠桿圖,對單個數據值的觀測,鑒別離群點、高杠桿點、強影響點
模型建好,用predict函數對剩餘500個樣本進行預測,比較殘差值,若預測准確,說明模型可以。
analysis of variance,簡稱ANOVA,也稱為變異數分析。用於兩個及兩個以上樣本均數差別的顯著性檢驗。廣義上,方差分析也是回歸分析的一種,只不過線性回歸的因變數一般是連續型變數。自變數是因子時,研究關注的重點通常會從預測轉向不同組之間的差異比較。也就是方差分析。
power analysis,可以幫助在給定置信度的情況下,判斷檢測到給定效應值所需的樣本量。也可以在給定置信度水平情況下,計算在某樣本量內能檢測到給定效應值的概率
拓展了線性模型的框架,包含了非正態因變數的分析。線性回歸、方差分析都是基於正態分布的假設
-泊松回歸絕脊消 ,用來為計數資料和列聯表建模的一種回歸分析。泊松回歸假設因變數是泊松分布,並假設它平均值的對數可被未知參數並知的線性組合建模
-logistic 回歸
通過一系列連續型或者類別型預測變數來預測二值型結果變數是,logistic 回歸是一個非常有用的工具。流行病學研究中用的多。
Principal Component Analysis,PCA,探索和簡化多變數復雜關系的常用方法。 是一種數據降維技巧。可以將大量相關變數轉化為一組很少的不相關變數。這些無關變數成為主成分。主成分是對原始變數重新進行線性組合,將原先眾多具有一定相關性的指標,重新組合為一組的心得相互獨立的綜合指標。
探索性因子分析法 exploratory factor analysis,簡稱為EFA,是一系列用來發現一組變數的潛在結構的方法。通過找尋一組野猜更小的、潛在的活隱藏的結構來解釋已觀測到的、顯式的變數間的關系
因子分析步驟與PCA一致
啤酒與尿布
㈧ 用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語言怎麼把股票日收盤價轉換成對數收益率
知道一系列收盤價向量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語言基本數據分析
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., 維他命對豬的體重有影響。