R 用比例因变量拟合数据

R 用比例因变量拟合数据,r,statistics,R,Statistics,下面是我的问题的简化版本和示例数据: 每年,我在院子里发现40个球。它们中有一定比例是红色的。我想对红球随时间的比例进行建模 library(tidyverse) library(modelr) # generate some proportion data that changes by year data = tibble( year = 2011:2020, reds = 1:10, # red balls total = 40, # total number of bal

下面是我的问题的简化版本和示例数据:

每年,我在院子里发现40个球。它们中有一定比例是红色的。我想对红球随时间的比例进行建模

library(tidyverse)
library(modelr)

# generate some proportion data that changes by year
data = tibble(
  year = 2011:2020, 
  reds = 1:10, # red balls
  total = 40, # total number of balls
  propRed = reds / total # proportion of red balls each year
)

# fit to a model
model = glm(propRed ~ year, XXX_WHAT_GOES_HERE_XXX, data)

# graph the model's prediction and the data
tibble(year = 2000:2030) %>% 
  modelr::add_predictions(model, "propRed") %>% 
  ggplot() + 
    aes(y=propRed, x=year) + 
    geom_line() +
    geom_point(data=data)

在这种情况下,我们可以使用逻辑回归,使用
glm
公式界面中的
cbind(成功,失败)
选项:

model <- glm(cbind(reds, total - reds) ~ year, family = 'binomial', data = data)

tibble(year = 2000:2030) %>% 
    mutate(propRed = predict(model, newdata = ., type = 'response')) %>%
    ggplot() + 
    aes(y=propRed, x=year) + 
    geom_line() +
    geom_point(data=data)
型号%
突变(propRed=predict(model,newdata=,type='response'))%>%
ggplot()+
aes(y=支持,x=年)+
geom_线()+
几何点(数据=数据)

这可能是逻辑回归。使用
glm(cbind(reds,total-reds)~year,family='二项式',data=data)
之类的方法调用
glm
不清楚你在问什么。此外,您可能希望发布交叉验证。@bouncyball:I运行了
tibble(year=2000:2030)%%>%predict.glm(model,)
,它预测了不可能出现的负值。@sharoz这些预测是对数赔率(),用
mutate(propRed=predict)替换
add\u predictions
行(model,newdata=,type='response'))
谢谢!
type='response'
是我需要的!如果你加上这个作为答案,我会检查一下。