请选择 进入手机版 | 继续访问电脑版
楼主: cbw1243
34888 504

[问答] 接受各种R语言难题   [推广有奖]

MILK$很好喝 学生认证  发表于 2016-6-27 16:02:13 来自手机 |显示全部楼层 |坛友微信交流群
cbw1243 发表于 2016-6-27 00:41
我没有做过,但是推荐你看一下 “wordcloud” 这个包。
嗯嗯,谢谢

使用道具

ivyvivi 学生认证  发表于 2016-6-27 16:50:12 |显示全部楼层 |坛友微信交流群
大神,我想用GLM模型来拟合几个变量的关系,Y~X1+X2+X3+X4+X5. 同伴叫我用negative binomial,因为研究的东西是疾病或者是社交传播,查了一下,好像一般都是用negative binomial,不过看解释都是说传播数量符合这个分布。
而我这里边Y 是个efficiency,是传播的效率,取值范围是[0,1], 而自变量,除了X1是整数,其他的也都是[0,1]区间的。
我这里到底该用什么样的线性或者非线性模型来拟合呢?
已有 1 人评分经验 收起 理由
日新少年 + 20 精彩帖子

总评分: 经验 + 20   查看全部评分

使用道具

cbw1243 发表于 2016-6-27 22:33:01 |显示全部楼层 |坛友微信交流群
ivyvivi 发表于 2016-6-27 16:50
大神,我想用GLM模型来拟合几个变量的关系,Y~X1+X2+X3+X4+X5. 同伴叫我用negative binomial,因为研究的东 ...
首先,GLM拟合是很简单的。以下是我random的数据和GLM回归
y <- runif(100)
x1 <- rpois(100,2)
x2 <- rnorm(100)
test <- MASS::glm.nb(y ~ x1 + x2) (会出现错误,因为y是continuous。但是你可以忽略,因为得到的参数估计是无偏的)
summary(test)
其次,在任何不用OLS的情况下,都要认真思考一下为什么不用OLS的原因。你已经做了功课,literature里说传播数量符合negative binomial分布。同时,你也意识到你可能不能依赖这个,因为你研究的变量不同。negative binomial的特质就是分布的方差大于mean,俗称over-dispersion. 你的模型里的Y的条件分布未必是这个。效率的取值应该是0到1,除非有特殊的原因导致你有很多的0效率观测值。不然,你是没有理由选择glm的。
最后,如果你的样本不够大,另外over-dispersion并不明显,你可以选择quasi-poisson。当然,从模型选择角度,你也可以用AIC来比较各种模型。效率评估里面有个DEA模型挺好用的,有时间可以注意一下。
已有 2 人评分经验 收起 理由
日新少年 + 20 精彩帖子
Nicolle + 20 精彩帖子

总评分: 经验 + 40   查看全部评分

使用道具

fcfc2013 发表于 2016-6-27 23:30:30 |显示全部楼层 |坛友微信交流群
library(xml2)
library(rvest)

fun <- function(i,url){
  url <- paste0(url,i)  
  web <- read_html(url)
  # 小区名称
  id <- web %>% html_nodes("div.col-1 h2 a") %>% html_text()
  # 每平米均价
  price <- web %>% html_nodes("div.average span.num") %>% html_text() %>% as.numeric()
  # 小区地址
  where <- web %>% html_nodes("div.where span.region") %>% html_text()
  # 房屋面积
  area <- web %>% html_nodes("div.area span") %>% html_text()
  lianjia <- data.frame(id, price, where, area)
}

lianjia <- data.frame()
url <- ("http://wh.fang.lianjia.com/loupan/pg")

for (i in 2:47){
  fun(i,url)
  lianjia <- rbind(lianjia,fun(i,url))
  }
我用 R的rvest包 函数爬 链家网 房产价格,循环采集制定的数据, 想循环爬取47个页面, (每个页面有10条数据)  
写了个fun(自定义爬取内容函数)  用for循环 47次 发现 每次运行就采集第2页10条数据;  这个怎么回事?

使用道具

cbw1243 发表于 2016-6-28 01:04:51 |显示全部楼层 |坛友微信交流群
fcfc2013 发表于 2016-6-27 23:30
library(xml2)
library(rvest)
我刚试运行了一下。你的代码没有问题。
这样做你会发现原因:
i <- 1
然后把fun里面的程序一个一个的运行。你会发现 area这个vector的length只有9。其他的都是10. 所以不能合并成dataframe,
你可以继续检查一下这是为什么。
已有 1 人评分论坛币 学术水平 热心指数 收起 理由
jiangbeilu + 10 + 2 + 2 精彩帖子

总评分: 论坛币 + 10  学术水平 + 2  热心指数 + 2   查看全部评分

使用道具

lww1993 发表于 2016-6-28 19:00:08 |显示全部楼层 |坛友微信交流群
大牛,如何读一篇中文文档,然后按照不同的字不同的标点去分类统计频数,然后写到EXCEL表格中?

使用道具

fcfc2013 发表于 2016-6-28 22:09:26 |显示全部楼层 |坛友微信交流群
cbw1243 发表于 2016-6-28 01:04
我刚试运行了一下。你的代码没有问题。
这样做你会发现原因:
i
弄了半天 还是没搞定“area”这个列为什么是“9”;我去掉这个。
for循环可以正常一次遍历完47页面;
R提倡隐式循环,如用“apply” 如何写,达到 “for” 同样的效果了?

使用道具

cbw1243 发表于 2016-6-28 22:52:17 |显示全部楼层 |坛友微信交流群
fcfc2013 发表于 2016-6-28 22:09
弄了半天 还是没搞定“area”这个列为什么是“9”;我去掉这个。
for循环可以正常一次遍历完47页面;
R ...
apply并不能增加运转速度。你可以用lapply

result <- lapply(1:47, function(i) fun(i, url)    #return a list
result <- do.call(rbind, result)  #combine all results

使用道具

cbw1243 发表于 2016-6-28 22:58:13 |显示全部楼层 |坛友微信交流群
lww1993 发表于 2016-6-28 19:00
大牛,如何读一篇中文文档,然后按照不同的字不同的标点去分类统计频数,然后写到EXCEL表格中?
R的文本抓取是很方便的,比如grep, grepl, strsplit
写到excel就更简单了,比如 write.csv。文本读取可以用 read.table
当然,具体怎么做看你具体的问题
已有 1 人评分经验 收起 理由
日新少年 + 20 精彩帖子

总评分: 经验 + 20   查看全部评分

使用道具

字符串处理:
[[9995]]
[1] "送货快" "物流"   "就是"   "好"   
[[9996]]
[1] "不错" "值得" "推荐"
[[9997]]
[1] "价格便宜" "味道不错"

如何转为变为
[9995]  "送货快" "物流"   "就是"   "好"
[9996]  "不错" "值得" "推荐"
[9997]  "价格便宜" "味道不错"

然后按行导出

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-29 07:38