小编hxd*_*011的帖子

可以使用广义线性模型估计多项模型吗?

在分类数据的分析中,我们经常使用逻辑回归来估计二项式结果与一个或多个协变量之间的关系.

我知道这是一种广义线性模型(GLM).在R中,这是glm使用参数的函数实现的family=binomial.另一方面,在分类数据分析中是多项式模型.这些不是GLM吗?并且不能用R glm函数估计它们吗?

(在这篇关于多项Logistic回归的文章中.作者使用外部包mlogit,看起来也过时了)

为什么GLM类限于二分类结果?是因为多类分类可以被视为多个二元分类模型吗?

r glm logistic-regression

12
推荐指数
1
解决办法
8324
查看次数

为什么`speedglm`比`glm`慢?

我试图用来speedglm实现更快的GLM估计 glm,但为什么它更慢?

set.seed(0)
n=1e3
p=1e3
x=matrix(runif(n*p),nrow=n)
y=sample(0:1,n,replace = T)

ptm <- proc.time()
fit=glm(y~x,family=binomial())
print(proc.time() - ptm)
#   user  system elapsed 
#  10.71    0.07   10.78 

library(speedglm)
ptm <- proc.time()
fit=speedglm(y~x,family=binomial())
print(proc.time() - ptm)
#   user  system elapsed 
#  15.11    0.12   15.25 
Run Code Online (Sandbox Code Playgroud)

performance regression r glm speedglm

6
推荐指数
1
解决办法
1403
查看次数

有没有办法为R optimx中的每次迭代提取参数和目标函数

假设我有一个要解决的优化问题R,optimx.有什么办法可以随着时间的推移提取参数和目标函数值吗?

f<-function(x){
  return(sum(abs(x)))
}

gr<-function(x){
  return(sign(x))
}
opt=optimx::optimx(runif(2),f,gr,method="BFGS")
Run Code Online (Sandbox Code Playgroud)

目标是试图制作这样的情节:

在此输入图像描述

我认为我们可以使用以下代码手动执行Gradient Decent,但我该如何操作呢optimx?

x=c(0.5,1.5)
alpha=0.1
max_iter=20
x_trace=matrix(rep(0,max_iter*2),ncol=2)

for (i in 1:max_iter){
  x=x-alpha*gr(x)
  x_trace[i,]=x
}
f_trace=apply(x_trace,1,f)
Run Code Online (Sandbox Code Playgroud)

r mathematical-optimization

4
推荐指数
1
解决办法
190
查看次数

当只有预测网格的分辨率发生变化时,为什么预测多项式会发生剧烈变化?

为什么我有完全相同的模型,但运行不同网格大小的预测(0.001对比0.01)获得不同的预测?

set.seed(0)
n_data=2000
x=runif(n_data)-0.5
y=0.1*sin(x*30)/x+runif(n_data)
plot(x,y)


poly_df=5
x_exp=as.data.frame(cbind(y,poly(x, poly_df)))
fit=lm(y~.,data=x_exp)

x_plt1=seq(-1,1,0.001)
x_plt_exp1=as.data.frame(poly(x_plt1,poly_df))
lines(x_plt1,predict(fit,x_plt_exp1),lwd=3,col=2)

x_plt2=seq(-1,1,0.01)
x_plt_exp2=as.data.frame(poly(x_plt2,poly_df))
lines(x_plt2,predict(fit,x_plt_exp2),lwd=3,col=3)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

regression r linear-regression lm polynomials

3
推荐指数
1
解决办法
56
查看次数

如何在RPART模型中获得树的深度?

假设我用RPART构建了一个玩具树模型,我怎样才能获得树的深度?

library(rpart)
library(partykit)
fit=rpart(factor(am)~.,mtcars,control=rpart.control(cp=0,minsplit = 1))
plot(as.party(fit))
Run Code Online (Sandbox Code Playgroud)

我知道如何计算叶子,对于二叉树,我们可以通过叶子的数量近似深度,但它不直接是树的深度.

sum(fit$frame$var=="<leaf>")
Run Code Online (Sandbox Code Playgroud)

tree r rpart

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

为什么我在递归DFS后打印出一个特殊字符?

我有一个简单的玩具代码用于深度优先搜索,但为什么我在打印后获得%?

# Definition for a  binary tree node
class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None
    def dfs(t):
    if t==None:    
        print("",end="")    
    else:    
        print(t.val,end="")        
        dfs(t.left)        
        dfs(t.right)

t=TreeNode(1)
t.left=TreeNode(2)
t.right=TreeNode(3)
t.left.left=TreeNode(4)
t.left.right=TreeNode(5)
t.right.left=TreeNode(6)
t.right.right=TreeNode(7)
dfs(t)
Run Code Online (Sandbox Code Playgroud)

产量:1245367%

python algorithm recursion depth-first-search

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

R中的矩阵和向量乘法运算

我觉得R中的矩阵运算非常令人困惑:我们正在混合行向量和列向量。

  • 在这里,我们定义x1为向量(我假设R默认向量是列向量吗?但它没有显示它是以这种方式排列的。)

  • 然后我们定义x2的转置x1,这对我来说也很奇怪。

  • 最后,如果我们定义x3为矩阵,则显示效果会更好。

现在,我的问题是,x1和x2是完全不同的东西(一个是另一个转),但我们这里有同样的结果。

有什么解释吗?可能我不应该将向量和矩阵运算混合在一起吗?

x1 = c(1:3)
x2 = t(x1)
x3 = matrix(c(1:3), ncol = 1)

x1
[1] 1 2 3

x2
     [,1] [,2] [,3]
[1,]    1    2    3

x3
     [,1]
[1,]    1
[2,]    2
[3,]    3

x3 %*% x1
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    2    4    6
[3,]    3    6    9

x3 %*% x2
     [,1] [,2] [,3]
[1,]    1    2    3
[2,] …
Run Code Online (Sandbox Code Playgroud)

r vector matrix matrix-multiplication

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