如何将Z - statistics的值作为来自glm
对象的向量?例如,我有
fit <- glm(y ~ 0 + x,binomial)
Run Code Online (Sandbox Code Playgroud)
如何Pr(>|z|)
以与系数估计相同的方式访问列fit$coef
?
在glm
R中,为默认的链接功能Gamma
的家人inverse
,identity
和log
.现在针对我的特定问题,我需要使用带有响应的伽玛回归Y
和以...形式修改的链接函数log(E(Y)-1))
.因此,我考虑修改glm
R中的一些相关函数.有几个函数可能是相关的,我正在寻求任何有过这方面经验的人的帮助.
例如,函数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) 我需要从函数内部更新回归模型.理想情况下,该功能应该与任何类型的模型(工作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)
任何的想法?
我想知道如何约束某些参数lm()
以获得正系数.有一些包或函数(例如display
)可以使所有系数和拦截为正.
例如,在这个例子中,我只想强迫x1
并x2
具有正系数.
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
可用于应用约束但我无法使其工作.
有人能让我知道我该怎么办?
我正在尝试使用MCMCglmm
R中的包创建模型
数据结构如下,其中二元,焦点,其他都是随机效应,预测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) 我正在尝试获取 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 测试吗?
在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) 这里有两个相关的问题,但它们不是矿的重复与第一个有一个解决方案特定于数据集,第二个涉及的故障glm
时start
沿着一个被提供offset
。
我有以下数据集:
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) 我正在尝试对响应变量介于 0 和 1 之间的数据进行建模,因此我决定在 R 中使用分数响应模型。根据我目前的理解,分数响应模型类似于逻辑回归,但它使用了 quasi-确定参数的似然法。我不确定我是否理解正确。
到目前为止,我尝试的是frm
from 包frm
和glm
以下数据,与此OP相同
library(foreign)
mydata <- read.dta("k401.dta")
Run Code Online (Sandbox Code Playgroud)
此外,我遵循了这个OP中glm
使用的程序。但是,对于相同的数据集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) 我听说人们在创建先验模型后想要计算一些效果时谈论“残差建模” 。例如,如果他们知道两个变量,var_1
并且var_2
是相关的,我们首先建立一个模型,var_1
然后对var_2
之后的影响进行建模。我的问题是我在实践中从未见过这样做过。
我对以下内容感兴趣:
glm
,我如何计算link function
使用的?glm
与var_2
作为解释变量?我认为这与1有关。我的尝试:
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) glm ×10
r ×8
lm ×2
bayesian ×1
dataframe ×1
julia ×1
mcmc ×1
modeling ×1
python ×1
regression ×1
statistics ×1
statsmodels ×1