- 博客(0)
- 资源 (10)
空空如也
Rvest网页爬虫
library(xml2)
library(rvest)
library(rvest)
library(stringr)
amazon.rank<-function(url='https://www.amazon.com/gp/bestsellers/wireless/ref=pd_zg_hrsr_wireless_1_1',start=1,end=1){
product<-data.frame()
for(i in start:end){
Sys.sleep(1)
##网页输入
url<-paste0(url,'#',"i")
web<-read_html(url,encoding="UTF-8") #读取数据,规定编码
##读入序号
num% html_nodes("span.zg_rankNumber")%>%html_text()%>%as.numeric()
num
##读入产品名称
name%html_nodes("div.zg_itemWrapper")%>%html_nodes("div.p13n-sc-truncated-hyphen")%>%html_text()%>%as.character()
to_remove <- paste(c("\n", "^\\s+|\\s+$"), collapse = "|")#去掉换行符、空格、, ",.*" 读取一种类型
position <- gsub(to_remove, "", name)
position<-as.factor(position)
position
2017-11-27
R语言从数据库中导入股票数据,并进行分析
#####################################查看股票数据################################
install.packages("quantmod")
library(xts)
library(zoo)
library(TTR)
library(quantmod)
#########################################################雅虎###########################
getSymbols("000002.SZ",scr="yahoo",from="2015-01-04",to="2015-12-18")
data.new<-to.weekly(`000002.SZ`)
data.raw<-`000002.SZ`
2017-11-27
R语言 关联规则 apriori算法
library(arules)
library(Matrix)
library(arules)
library(arulesViz)
library(grid)
library(arulesViz)
data('SunBai')
summary(SunBai)
#inspect函数查看SunBai数据集的前5次交易记录
inspect(SunBai[1:5])
#itemFrequency()函数可以查看商品的交易比例
itemFrequency(SunBai[,1:3])
#support=0.1,表示支持度至少为0.1
itemFrequencyPlot(SunBai,support=0.1)
#topN=20,表示支持度排在前20的商品
itemFrequencyPlot(SunBai,topN=20)
#利用transactionInfo函数查看前六数据
head(transactionInfo(SunBai))
2017-08-30
R语言 BEKK模型回归
利用R语言,进行bekk模型回归
library(mvtnorm)
library(tseries)
library(mgarchBEKK)
data<-read.csv("C:/Users/li/Desktop/1.csv",sep=",",header=T)
....
estimated <- BEKK(simulated)
diagnoseBEKK(estimated)
ab11<-estimated$residuals[[1]]
ab12<-estimated$residuals[[2]]
ab13<-estimated$residuals[[3]]
Box.test(ab11,lag=12,type=c('Ljung-Box'))
Box.test(ab11,lag=24,type=c('Ljung-Box'))
Box.test(ab12,lag=12,type=c('Ljung-Box'))
Box.test(ab12,lag=24,type=c('Ljung-Box'))
2017-08-30
R语言 garch回归
variance.model = list(model = "sGARCH", garchOrder = c(1, 1),submodel = NULL, external.regressors = NULL, variance.targeting = FALSE)
distribution.model = "norm"
ugarchfit(spec, datax, out.sample = 0, solver = "solnp", solver.control = list(),fit.control = list(stationarity = 1, fixed.se = 0, scale = 0))
myspec=ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1), submodel = NULL, external.regressors = NULL, variance.targeting = FALSE), mean.model = list(armaOrder = c(1, 1), include.mean = TRUE, archm = FALSE, archpow = 1, arfima = FALSE, external.regressors = NULL, archex = FALSE), distribution.model = "norm")
myfit=ugarchfit(myspec,data=datax,solver="solnp")
#rugarch包中模型结果的提取要依靠as.data.frame函数。比如提取模型的拟合值
as.data.frame(myfit,which="fitted")
#提取残差序列:
as.data.frame(myfit,which=" residuals")
#提取方差序列:
as.data.frame(myfit,which="sigma")
#当然,也可以同时查看所有:
as.data.frame(myfit,which=all)
#通过plot(myfit)可以对模型结果进行图形诊断:
plot(myfit)
#如果模型通过检验,可以用ugarchforcast函数对未来进行预测:
for<-ugarchforcast(myfit,n.ahead=20)
library(zoo) #时间格式预处理
library(xts) #同上
library(timeSeires) #同上
library(urca) #进行单位根检验
library(tseries) #arma模型
library(fUnitRoots) #进行单位根检验
library(FinTS) #调用其中的自回归检验函数
library(fGarch) #GARCH模型
library(nlme) #调用其中的gls函数
library(fArma) #进行拟合和检验
2017-08-30
R语言 所有分类数据回归
#glmnet包含有线性回归,逻辑回归,泊松计数模型,cox回归模型,多分类逻辑回归多响应线性回归
#阿法系数=0是岭回归,阿法系数=1,是lasso回归
############################################################
data(QuickStartExample)
#20 Independent variables and 1 dependent variable
fit<-glmnet(x,y)
#查看计算路径
print(fit)#Df是非零系数的个数,第三列是惩罚力度,第二列是相应的惩罚力度对应的解释偏差百分比
#利用coef来提取模型的系数
coef(fit,s=0.1)
#可视化
plot(fit)
#预测
#参数newx用来设置输入数据,s用来设置朗姆塔(惩罚力度)的值
nx<-matrix(rnorm(10*20),10,20)
predict(fit,newx=nx,s=c(0.1,0.05))
#交叉验证,筛选最优的朗姆塔的值,cv.glmnet函数实现这个功能
cvfit<-cv.glmnet(x,y)
plot(cvfit)#红色散点为交叉验证的散点图,两条垂直的虚线为交叉验证后选定的朗姆塔
#提取最优的朗姆塔的值
cvfit$lambda.min#均方误差最小
cvfit$lambda.1se#一倍标准差
#根据朗姆塔来取得系数
coef(cvfit,s='lambda.min')
#将稀疏矩阵转化为传统矩阵
as.matrix(coef(cvfit,s='lambda.min'))
2017-08-30
R语言 爬取网页数据,并进行整理归类
主要是通过R语言,对网页上的数据进行进行爬取,并且整理成文本格式,或者excel格式。
Sys.setlocale("LC_TIME", "C")
## [1] "C"-----------------------------------------------------------
## Create a function,the parameter 'i' means page number.
getdata <- function(i){
url <- paste0("www.cnblogs.com/p",i)##generate url
combined_info %html_session()%>%html_nodes("div.post_item div.post_item_foot")%>%html_text()%>%strsplit(split="\r\n")
#对日期数据的处理-------------------------------------------------------------
post_date %str_sub(9,24)%>%as.POSIXlt()##get the date
post_year <- post_date$year+1900
post_month <- post_date$mon+1
post_day <- post_date$mday
post_hour <- post_date$hour
post_weekday <- weekdays(post_date)
#对主题数据的读取 文本的格式的读取
title %html_session()%>%html_nodes("div.post_item h3")%>%html_text()%>%as.character()%>%trim()
2017-08-30
R语言 对日期数据的缺失补全方法
主要是通过R语言,对日期数据进行处理,并补全缺失数据
rawdata<- read.csv("C:/Users/li/Desktop/ss.csv",fill=F)
#提取数据 ss1,并组合数据-------------------------------
ts1<-rawdata$ts1
ts11<-as.Date(ts1,'%Y/%m/%d')
false<-is.na(ts11)
ts21<-ts11[!false]
ss1<-rawdata$SS1
ss1<-ss1[!false]
library(zoo)
data1<-zoo(ss1,ts21)
#补全不规则数据(时间的缺失和缺失值)
date1<-zoo(,seq(start(data1),end(data1),'day'))
datanew1<-merge(data1,date1)
datanew1[is.na(datanew1)]<-median(datanew1,na.rm = T)
#提取数据 ss2
2017-08-30
R语言 随机森林回归
主要利用R语言进行随机森林回归,还有其他两种回归,
library(lattice)
library(grid)
library(DMwR)
library(rpart)
library(ipred)
library(randomForest)
#回归树,装袋算法,随机森林三大回归
#前二种算法可以计算缺失数据,但随机森林不行,所以还需将数据进行清洗整理
data(algae)
algae <- algae[-manyNAs(algae,0.2), ]#占有20%的NA值的行去掉
clean.algae <- knnImputation(algae,k=10)#平均值填充NA值
#回归树模型计算
model.tree=rpart(a1 ~ ., data = clean.algae[, 1:12])
summary(model.tree)
pre.tree <- predict(model.tree, clean.algae)
plot(pre.tree~clean.algae$a1)
nmse1 <- mean((pre.tree- clean.algae[,'a1'])^2)/mean((mean(clean.algae[,'a1'])- clean.algae[,'a1'])^2)
nmse1
2017-08-30
R语言 处理日期数据
主要是用R语言,进行初期日期数据。
data1<-read.csv(file='C:/Users/li/Desktop/参数优化/a.csv',header = T)
data2<-read.csv(file='C:/Users/li/Desktop/参数优化/b.csv',header = T)
#提取日期数据
date1<-as.Date(data1$日期)
dates<-paste(data2$年,data2$月,data2$日,sep='/')
date2<-as.Date(dates,'%Y/%m/%d')
xdate1<-date1[1:28]#tree 1
xdate2<-date1[29:54]#tree 2
xdate3<-date1[55:81]#tree 3
#构造09-01的日期形式
dates<-paste(data1$年-1,'09','01',sep='/')
datestan<-as.Date(dates,'%Y/%m/%d')
datestan1<-datestan[1:28]#tree 1
datestan2<-datestan[29:54]#tree 2
datestan3<-datestan[55:81]#tree 3
#提取气温数据
temp<-as.numeric(data2$平均气温)
##-------------------------------------------------
#C t0 tb Tb
Rc=function(c,Tb){
rc=0
ci<-datn1
while(rc!=c|ci<=datn1+140){
rc<-rc+sum(temp[ci]<=Tb)
ci=ci+1
}
print(ci)
}
#
#
Rf=function(f,Tb){
rf=0
fi<-tb
while(rf<=f|fi<=tb+200){
if(temp[fi] <= Tb){
rf<-rf+0} else
{rf<-rf+temp[fi]-Tb}
fi=fi+1
}
print(c(fi,rf))
}
#
#------------------------------
ypre<-datestan1
for(i in 1:28){
dat1<-datestan1[i]
datn1<-which(date2==dat1)
tb<-Rc(c=100,Tb=10)
result<-Rf(f=100,Tb=10)
y<-result[1]
rf<-result[2]
ypre[i]<-dat1+y-datn1
}
r2<-mean(ypre-xdate1)
2017-08-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人