标签: glm

如何从glm对象中获取Z - 统计值?

如何将Z - statistics的值作为来自glm对象的向量?例如,我有

fit <- glm(y ~ 0 + x,binomial)
Run Code Online (Sandbox Code Playgroud)

如何Pr(>|z|)以与系数估计相同的方式访问列fit$coef

r glm

8
推荐指数
1
解决办法
3660
查看次数

修改glm函数,在R中采用用户指定的链接函数

glmR中,为默认的链接功能Gamma的家人inverse,identitylog.现在针对我的特定问题,我需要使用带有响应的伽玛回归Y和以...形式修改的链接函数log(E(Y)-1)).因此,我考虑修改glmR中的一些相关函数.有几个函数可能是相关的,我正在寻求任何有过这方面经验的人的帮助.

例如,函数Gamma定义为

function (link = "inverse") 
{
  linktemp <- substitute(link)
  if (!is.character(linktemp)) 
    linktemp <- deparse(linktemp)
  okLinks <- c("inverse", "log", "identity")
  if (linktemp %in% okLinks) 
    stats <- make.link(linktemp)
  else if (is.character(link)) 
    stats <- make.link(link)
  else {
    if (inherits(link, "link-glm")) {
      stats <- link
      if (!is.null(stats$name)) 
        linktemp <- stats$name
    }
    else {
      stop(gettextf("link \"%s\" not available for gamma family; available links are %s", 
                    linktemp, …
Run Code Online (Sandbox Code Playgroud)

r glm

8
推荐指数
1
解决办法
5247
查看次数

update()具有局部协变量的函数内的模型

我需要从函数内部更新回归模型.理想情况下,该功能应该与任何类型的模型(工作lm,glm,multinom,clm).更准确地说,我需要添加一个或几个在函数内定义的协变量.这是一个例子.

MyUpdate <- function(model){
     randData <- data.frame(var1=rnorm(length(model$residuals)))
     model2 <- update(model, ".~.+randData$var1")
     return(model2)
}
Run Code Online (Sandbox Code Playgroud)

这是一个示例用法

data(iris)
model1 <- lm(Sepal.Length~Species, data=iris)
model2 <- MyUpdate(model1)
Run Code Online (Sandbox Code Playgroud)

eval(expr,envir,enclos)出错:找不到对象'randData'

这是glm的另一个例子

model1 <- glm(Sepal.Length>5~Species, data=iris, family=binomial)
model2 <- MyUpdate(model1)
Run Code Online (Sandbox Code Playgroud)

任何的想法?

r lm glm

8
推荐指数
1
解决办法
715
查看次数

R - 强制某个参数在lm()中具有正系数

我想知道如何约束某些参数lm()以获得正系数.有一些包或函数(例如display)可以使所有系数和拦截为正.

例如,在这个例子中,我只想强迫x1x2具有正系数.

    x1=c(NA,rnorm(99)*10)
    x2=c(NA,NA,rnorm(98)*10)
    x3=rnorm(100)*10
    y=sin(x1)+cos(x2)-x3+rnorm(100)

    lm(y~x1+x2+x3)

    Call:
      lm(formula = y ~ x1 + x2 + x3)       
    Coefficients:
      (Intercept)           x1           x2           x3  
    -0.06278      0.02261     -0.02233     -0.99626
Run Code Online (Sandbox Code Playgroud)

我试过功能nnnpls()nnls,它可以轻松控制系数符号.遗憾的是,由于数据中的NA问题,我无法使用它,因为此函数不允许NA.

我看到函数NA可用于应用约束但我无法使其工作.

有人能让我知道我该怎么办?

regression r linear-regression lm glm

8
推荐指数
1
解决办法
6899
查看次数

R中的MCMCglmm多项式模型

我正在尝试使用MCMCglmmR中的包创建模型

数据结构如下,其中二元,焦点,其他都是随机效应,预测1-2是预测变量,响应1-5是捕获不同子类型的观察行为#的结果变量:

 dyad focal other r    present  village  resp1 resp2 resp3 resp4 resp5 
 1    10101 14302 0.5  3        1        0     0     4     0     5
 2    10405 11301 0.0  5        0        0     0     1     0     1
 …
Run Code Online (Sandbox Code Playgroud)

所以只有一个结果(教学)的模型如下:

 prior_overdisp_i <- list(R=list(V=diag(2),nu=0.08,fix=2), 
 G=list(G1=list(V=1,nu=0.08), G2=list(V=1,nu=0.08), G3=list(V=1,nu=0.08), G4=list(V=1,nu=0.08)))

 m1 <- MCMCglmm(teaching ~ trait-1 + at.level(trait,1):r + at.level(trait,1):present, 
 random= ~idh(at.level(trait,1)):focal + idh(at.level(trait,1)):other + 
 idh(at.level(trait,1)):X + idh(at.level(trait,1)):village, 
 rcov=~idh(trait):units, family = "zipoisson", prior=prior_overdisp_i, 
 data = data, nitt = nitt.1, thin = 50, burnin = 15000, …
Run Code Online (Sandbox Code Playgroud)

r bayesian mcmc glm

7
推荐指数
1
解决办法
3499
查看次数

Python 中 GLM 的方差分析测试

我正在尝试获取 GLM 中每个协变量的 F 统计量和 p 值。在 Python 中,我使用 stats mode.formula.api 来执行 GLM。

formula = 'PropNo_Pred ~ Geography + log10BMI + Cat_OpCavity + CatLes_neles + CatRural_urban + \
        CatPred_Control + CatNative_Intro + Midpoint_of_study'

mod1 = smf.glm(formula=formula, data=A2, family=sm.families.Binomial()).fit()
mod1.summary()
Run Code Online (Sandbox Code Playgroud)

之后,我尝试使用 statsmodels.stats 中的方差分析对该模型进行方差分析测试

table1 = anova_lm(mod3)
print table1
Run Code Online (Sandbox Code Playgroud)

但是我收到一条错误消息:“GLMResults”对象没有属性“ssr”

看起来这个 anova_lm 函数只适用于线性模型,python 中有一个模块可以对 GLM 进行 anova 测试吗?

python statistics glm statsmodels

7
推荐指数
2
解决办法
5054
查看次数

朱莉娅的虚拟变量

在R中,对于分类变量的每个级别,使用虚拟变量运行回归具有很好的功能.例如,自动将R因子扩展为每个因子级别的1/0指标变量的集合

在朱莉娅有没有相同的方法来做到这一点.

x = randn(1000)
group = repmat(1:25 , 40)
groupMeans = randn(25)
y = 3*x + groupMeans[group]

data = DataFrame(x=x, y=y, g=group)
for i in levels(group)
    data[parse("I$i")] = data[:g] .== i
end
lm(y~x+I1+I2+I3+I4+I5+I6+I7+I8+I9+I10+
    I11+I12+I13+I14+I15+I16+I17+I18+I19+I20+
    I21+I22+I23+I24, data)
Run Code Online (Sandbox Code Playgroud)

dataframe glm julia

7
推荐指数
1
解决办法
1026
查看次数

这些 R glm 错误消息是什么意思:“错误:未找到有效的系数集:请提供起始值”

这里有两个相关的问题,但它们不是矿的重复与第一个有一个解决方案特定于数据集,第二个涉及的故障glmstart沿着一个被提供offset

/sf/ask/2193984621/://stackoverflow.com/questions/8212063/r-glm-starting-values-not-accepted-log-link

我有以下数据集:

library(data.table)
df <- data.frame(names = factor(1:10))
set.seed(0)
df$probs <- c(0, 0, runif(8, 0, 1))
df$response = lapply(df$probs, function(i){
  rbinom(50, 1, i)  
})



dt <- data.table(df)

dt <- dt[, list(response = unlist(response)), by = c('names', 'probs')]
Run Code Online (Sandbox Code Playgroud)

dt

> dt
     names     probs response 
  1:     1 0.0000000        0 
  2:     1 0.0000000        0 
  3:     1 0.0000000        0 
  4:     1 0.0000000        0 
  5:     1 0.0000000        0 
 ---                                     
496:    10 0.9446753        0 
497:    10 0.9446753 …
Run Code Online (Sandbox Code Playgroud)

r glm

7
推荐指数
1
解决办法
2万
查看次数

R中的分数响应回归

我正在尝试对响应变量介于 0 和 1 之间的数据进行建模,因此我决定在 R 中使用分数响应模型。根据我目前的理解,分数响应模型类似于逻辑回归,但它使用了 quasi-确定参数的似然法。我不确定我是否理解正确。

到目前为止,我尝试的是frmfrom 包frmglm以下数据,与此OP相同

library(foreign)
mydata <- read.dta("k401.dta")
Run Code Online (Sandbox Code Playgroud)

此外,我遵循了这个OPglm使用的程序。但是,对于相同的数据集frm,它返回不同的 SE

library(frm)
y <- mydata$prate
x <- mydata[,c('mrate', 'age', 'sole', 'totemp1')]
myfrm <- frm(y, x, linkfrac = 'logit')
Run Code Online (Sandbox Code Playgroud)

frm 返回,

*** Fractional logit regression model ***

           Estimate Std. Error t value Pr(>|t|)    
INTERCEPT  1.074062   0.048902  21.963    0.000 ***
mrate      0.573443   0.079917   7.175    0.000 ***
age        0.030895   0.002788  11.082    0.000 ***
sole …
Run Code Online (Sandbox Code Playgroud)

r glm

7
推荐指数
1
解决办法
6273
查看次数

R:残差建模

我听说人们创建先验模型想要计算一些效果时谈论“残差建模” 。例如,如果他们知道两个变量,var_1并且var_2是相关的,我们首先建立一个模型,var_1然后对var_2之后的影响进行建模。我的问题是我在实践中从未见过这样做过。

我对以下内容感兴趣:

  1. 如果我使用的是glm,我如何计算link function使用的?
  2. 我运行的第二时选择什么样的分布glmvar_2作为解释变量?我认为这与1有关。
  3. 这是否与使用第一个模型预测作为第二个模型中的偏移量有关?

我的尝试

dt <- data.table(mtcars) # I have a hypothesis that `mpg` is a function of both `cyl` and `wt`
dt[, cyl := as.factor(cyl)]
model <- stats::glm(mpg ~ cyl, family=Gamma(link="log"), data=dt) # I want to model `cyl` first
dt[, pred := stats::predict(model, type="response", newdata=dt)]
dt[, res := mpg - pred]

# will this …
Run Code Online (Sandbox Code Playgroud)

modeling r glm

7
推荐指数
1
解决办法
145
查看次数