首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对R中的重复情况使用权重(特别是对二元响应使用gam )

对R中的重复情况使用权重(特别是对二元响应使用gam )
EN

Stack Overflow用户
提问于 2013-07-20 01:53:21
回答 2查看 956关注 0票数 2

我注意到许多R模型都允许“权重”参数(例如cart、loess、gam等)。大多数帮助函数将其描述为数据的“先验权重”,但这实际上意味着什么?

我有很多重复案例和二元响应的数据。我希望我可以使用“权重”来编码每种输入和响应组合发生的次数,但这似乎不起作用。我还尝试将响应设置为成功的比例,并将权重设置为每个协变量组合的总试验次数,但这似乎也不起作用(至少对gam是这样)。我正在尝试为上面列出的所有型号类型执行此操作,但对于初学者,如何为gam mgcv包执行此操作

EN

回答 2

Stack Overflow用户

发布于 2013-07-20 01:58:03

二项式响应的权重有一个自然的解释:每个观察值对应的试验次数。如果您有p成功的n试验,您可以将以下内容与以下内容相匹配

代码语言:javascript
运行
复制
glm(p/n ~ x, family=binomial, weights=n)

这同样适用于gammgcv包中的gam

票数 2
EN

Stack Overflow用户

发布于 2013-07-20 10:51:05

我也曾认为权重是对重复观察的样本大小进行编码的一种便捷方式。但下面的示例表明,对于简单的线性模型,情况并非如此。我首先用观察到的/虚构的鞋码和人的身高定义了一个列联表,并用leats平方回归将频率指定为权重:

代码语言:javascript
运行
复制
SKdata = matrix(c(20,5,5,5,40,15,3,27,30,2,3,10),ncol=4)
dimnames(SKdata) = list(shoesize=10:12,height=seq(160,190,by=10))

x = as.data.frame(as.table(SKdata), stringsAsFactors=FALSE)
for (i in 1:ncol(x)) x[,i] = as.numeric(x[,i])
fit1 = lm(height ~ shoesize,data=x, weights=Freq)
summary(fit1)

请注意,斜率的系数是不重要的,残差是基于"10个自由度“

当我使用方便的函数expand.dft将列联表转换为“原始”数据时,这一点发生了变化:

代码语言:javascript
运行
复制
expand.dft <- function(x, na.strings = "NA", as.is = FALSE, dec = ".")
{
  DF <- sapply(1:nrow(x), function(i) x[rep(i, each = x$Freq[i]), ],
               simplify = FALSE)

  DF <- subset(do.call("rbind", DF), select = -Freq)

  for (i in 1:ncol(DF))
  {
    DF[[i]] <- type.convert(as.character(DF[[i]]),
                            na.strings = na.strings,
                            as.is = as.is, dec = dec)                                       
  }
  DF
} 

fit2 = lm(height ~ shoesize,data=expand.dft(x))
summary(fit2)

我们得到了相同的系数,但这次非常重要,因为它是基于"163个自由度“。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17752502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档