首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >通过RPy调用lme4. Call输出的anova

通过RPy调用lme4. Call输出的anova
EN

Stack Overflow用户
提问于 2013-11-12 04:04:16
回答 2查看 1.2K关注 0票数 1

我试图通过RPy分析用lme4.lmer()生成的一组线性模型的偏差。这里的笔记本展示了一个完整的示例,我导入了我的dep,加载了我的文件,运行了lme4.lmer(),并且没有让anova在它们上运行。

为了您的方便,这里再次是一个粘贴的线,正在失败,我想看到工作。

代码语言:javascript
运行
AI代码解释
复制
compare = stats.anova(res[0], res[1], res[2])
    Error in Ops.data.frame(data, data[[1]]) : 
      list of length 3 not meaningful
    In addition: Warning message:
    In anova.merMod(<S4 object of class "lmerMod">, <S4 object of class "lmerMod">,  :
      failed to find unique model names, assigning generic names

    ---------------------------------------------------------------------------
    RRuntimeError                             Traceback (most recent call last)
    <ipython-input-47-fe0ffa3b55de> in <module>()
    ----> 1 compare = stats.anova(res[0], res[1], res[2])

    /usr/lib64/python2.7/site-packages/rpy2/robjects/functions.pyc in __call__(self, args, **kwargs)
         84                 v = kwargs.pop(k)
         85                 kwargs[r_k] = v
    ---> 86         return super(SignatureTranslatedFunction, self).__call__(*args, **kwargs)

    /usr/lib64/python2.7/site-packages/rpy2/robjects/functions.pyc in __call__(self, *args, **kwargs)
         33         for k, v in kwargs.iteritems():
         34             new_kwargs[k] = conversion.py2ri(v)
    ---> 35         res = super(Function, self).__call__(*new_args, **new_kwargs)
         36         res = conversion.ri2py(res)
         37         return res

    RRuntimeError: Error in Ops.data.frame(data, data[[1]]) : 
      list of length 3 not meaningful

这段代码在R中运行得非常完美,如下所示:

代码语言:javascript
运行
AI代码解释
复制
> mydata = read.csv("http://chymera.eu/data/test/r_data.csv")
> library(lme4)
Loading required package: lattice
Loading required package: Matrix
> lme1 = lme4.lmer(formula='RT~cat2 + (1|ID)', data=mydata, REML=FALSE)
Error: could not find function "lme4.lmer"
> lme1 = lmer(formula='RT~cat1 + (1|ID)', data=mydata, REML=FALSE)
> lme2 = lmer(formula='RT~cat2 + (1|ID)', data=mydata, REML=FALSE)
> anova(lme1,lme2)
> lme3 = lmer(formula='RT~cat2*cat1 + (1|ID)', data=mydata, REML=FALSE)
> stats::anova(lme1, lme2, lme3)
Data: mydata
Models:
lme1: RT ~ cat1 + (1 | ID)
lme2: RT ~ cat2 + (1 | ID)
lme3: RT ~ cat2 * cat1 + (1 | ID)
     Df    AIC    BIC  logLik deviance  Chisq Chi Df Pr(>Chisq)    
lme1  4 116.68 122.29 -54.342   108.68                             
lme2  4 149.59 155.19 -70.793   141.59  0.000      0          1    
lme3  6 117.19 125.59 -52.594   105.19 36.398      2  1.248e-08 ***
---
Signif. codes:  0***0.001**0.01*0.05.0.1 ‘ ’ 1

你能帮我让它在RPy上运行吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-12 17:45:30

在R中,stats::anova()可能是从函数调用中未计算的表达式中推断模型名称的。这是lme1'lme2lme3

现在,考虑不使用变量名称而重写R代码,因为这更接近于当前实现中发生的情况,因为数据rpy2和拟合的模型不绑定到变量名。这将给出以下内容(注意:“更近”而不是“平等”-关于这一点的细节只会分散注意力):

代码语言:javascript
运行
AI代码解释
复制
stats::anova(lmer(formula='RT~cat1 + (1|ID)',
                  data=read.csv("http://chymera.eu/data/test/r_data.csv"),
                  REML=FALSE),
             lmer(formula='RT~cat2 + (1|ID)',
                  data=read.csv("http://chymera.eu/data/test/r_data.csv"),
                  REML=FALSE),
             lmer(formula='RT~cat2*cat1 + (1|ID)',
                  data=read.csv("http://chymera.eu/data/test/r_data.csv"),
                  REML=FALSE))

结果是R.

代码语言:javascript
运行
AI代码解释
复制
Error in names(mods) <- sub("@env$", "", mNms) : 
  'names' attribute [6] must be the same length as the vector [3]
In addition: Warning message:
In anova.merMod(lmer(formula = "RT~cat1 + (1|ID)", data = read.csv("http://chymera.eu/data/test/r_data.csv"),  :
  failed to find unique model names, assigning generic names

这意味着R函数lme4:::anova.meMod所做的假设很容易被违反,应该通知包的作者。

它还显示表达式将用于识别结果文本输出中的模型。

以下可能缺乏一些优雅,但应该是一个解决办法,并保持标签为模型短。

代码语言:javascript
运行
AI代码解释
复制
# bind the DataFrame to an R symbol
robjects.globalenv['dataf'] = dfr
# build models, letting R fetch the symbol `dataf` when it is evaluating
# the parameters in the function call
res = list()
for formula in formulae:
    lme_res = lme4.lmer(formula=formula, data=base.as_symbol("dataf"), REML='false')
    res.append(lme_res)
# This is enough to work around the problem
compare = stats.anova(res[0], res[1], res[2])

# if not happy with the model names displayed by `compare`,
# globalenv can be filled further
names = list()
for i, value in enumerate(res):
    names.append('lme%i'  % i)
    robjects.globalenv[names[i]] = value 
# call `anova`
compare = stats.anova(*[base.as_symbol(x) for x in names])
票数 1
EN

Stack Overflow用户

发布于 2013-11-13 11:32:44

这是用于anova对象的merMod方法中的一个bug :它本质上是由传递给R的对象的名称太长引起的,因此当deparse()d结束时,它们是具有(意外)多个元素的字符向量。这是由https://github.com/lme4/lme4/commit/075c78d128db9d8398f43474621e49f32fdb5bd1修正的;现在还有一个(无文档的)参数model.names,可以指定它来覆盖模型名称的离开。

您可以使用devtools::install_github("lme4","lme4")安装开发版本,否则可能需要等待一段时间才能发布修补版本.除了构造您的调用之外,无法想到其他的解决方法,以便在离开时传递给R的语言对象更短。

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

https://stackoverflow.com/questions/19928662

复制
相关文章
矩阵特征值和特征向量详细计算过程(转载)_矩阵特征值的详细求法
A为n阶矩阵,若数λ和n维非0列向量x满足Ax=λx,那么数λ称为A的特征值,x称为A的对应于特征值λ的特征向量。式Ax=λx也可写成( A-λE)x=0,并且|λE-A|叫做A 的特征多项式。当特征多项式等于0的时候,称为A的特征方程,特征方程是一个齐次线性方程组,求解特征值的过程其实就是求解特征方程的解。
全栈程序员站长
2022/11/01
10.4K0
numpy 矩阵|特征值|特征向量
https://www.servicenow.com/products/it-operations-management/what-is-aiops.html
heidsoft
2023/03/18
4430
numpy 矩阵|特征值|特征向量
Python使用numpy计算矩阵特征值、特征向量与逆矩阵
Python扩展库numpy.linalg的eig()函数可以用来计算矩阵的特征值与特征向量,而numpy.linalg.inv()函数用来计算可逆矩阵的逆矩阵。 >>> import numpy as np >>> x = np.matrix([[1,2,3], [4,5,6], [7,8,9]]) # 计算矩阵特征值与特征向量 >>> e, v = np.linalg.eig(x) # 根据特征值和特征向量得到原矩阵 >>> y = v * np.diag(e) * np.linalg.inv(v) >
Python小屋屋主
2018/04/16
10.1K0
矩阵特征值和特征向量怎么求_矩阵的特征值例题详解
  设 A 是n阶方阵,如果存在数m和非零n维列向量 x,使得 Ax=mx 成立,
全栈程序员站长
2022/09/20
1.3K0
特征值和特征向量及其计算
在第2章中,我们已经反复强化了一个观念——矩阵就是映射,如果用矩阵乘以一个向量,比如:
老齐
2021/07/28
1.8K0
数值计算方法 Chapter7. 计算矩阵的特征值和特征向量
显然,对于任意一个向量 ,我们总可以将其用 阶矩阵的一组正交基进行表示,即:
codename_cys
2022/06/20
2K0
浅谈矩阵的特征向量特征值的意义
线性变换与矩阵的特征向量特征值 2.数学上的意义 3.在物理上的意义 4.信息处理上的意义 5.哲学上的意义
瓜大三哥
2018/02/24
1.3K0
浅谈矩阵的特征向量特征值的意义
特征值和特征向量
$$ \begin{array} \mathbf{I A} \mathbf{x}=\mathbf{I} \cdot \lambda \mathbf{x} \\ \mathbf{A} \mathbf{x}=(\lambda I) \mathbf{x} \end{array} $$
为为为什么
2022/09/30
9920
矩阵分析笔记(七)特征值与特征向量
设\mathscr{A}是数域\mathbb{F}上的n维线性空间V的线性变换,若存在\alpha \neq 0, \lambda \in \mathbb{F},使
mathor
2020/10/23
1.8K0
矩阵分析笔记(七)特征值与特征向量
矩阵特征值计算
对于计算特征值,没有直接的方法。2阶或3阶矩阵可以采用特征多项式来求。但如果试图求下列矩阵的特征值,我们试图用特征多项式 P(x)=(x-1)(x-2)...(x-20) 求特征值是不明智的。 考察一
fem178
2018/04/08
1.6K0
矩阵特征值计算
线性代数精华——矩阵的特征值与特征向量
今天和大家聊一个非常重要,在机器学习领域也广泛使用的一个概念——矩阵的特征值与特征向量。
TechFlow-承志
2020/03/05
2.6K0
线性代数精华——矩阵的特征值与特征向量
特征值,特征向量排序
import numpy as np evals=np.array([0,2,5,3,1]) evecs=np.array([[1,1],[2,3],[4,5],[7,7],[6,8]]) print evecs.shape # 默认按升序排列 sorted_indices = np.argsort(evals) # 取相反数 变为按降序排列 sorted_indices = np.argsort(-evals) print sorted_indices k=3 # 切片取特征向量列向量 topk_eve
用户1733462
2018/06/01
1.3K3
numpy求特征向量_python计算矩阵
可知矩阵A:特征值为1对应的特征向量为 [ -1,-2,1]T。特征值为2对应的特征向量为 [ 0,0,1]T 我们可以进一步对特征向量进行单位化,单位化之后的结果如下:
全栈程序员站长
2022/11/01
1.1K0
numpy求特征向量_python计算矩阵
矩阵特征值的求解例子
《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来! 01 — 求矩阵特征值的例子 矩阵的
double
2018/04/02
1.9K0
矩阵特征值的求解例子
线性代数--MIT18.06(二十七)
傅里叶矩阵(Fourier Matrix)是一个特殊的复矩阵,同时也是一个酉矩阵。它来源于傅里叶转换,其矩阵的特殊性质,通过矩阵分解,可以将计算量从
fireWang
2019/03/13
9050
比较CPU和GPU中的矩阵计算
GPU 计算与 CPU 相比能够快多少?在本文中,我将使用 Python 和 PyTorch 线性变换函数对其进行测试。
deephub
2022/11/11
1.6K0
比较CPU和GPU中的矩阵计算
线性代数整理(三)行列式特征值和特征向量
比方说在二维平面中,这里有三组二维向量,每组都有两个向量,那么每组向量的面积就可以表示它们的不同。当然这里说面积是针对二维平面来说的,在三维空间中,就是体积;在更高维度中,可能就是一个体,但这个体比较抽象
算法之名
2021/03/04
2.7K0
线性代数的本质课程笔记-特征向量/特征值
视频地址:https://www.bilibili.com/video/av6540378/?spm_id_from=333.788.videocard.0 本篇来讲一下线性代数中非常重要的一个概念:
石晓文
2019/09/24
8840
线性代数的本质课程笔记-特征向量/特征值
博客 | MIT—线性代数(下)
1、 投影矩阵与最小二乘:向量子空间投影在机器学习中的应用最为广泛。就拿最小二乘的线性拟合来说,首先根据抽样特征维度假设线性方程形式,即假设函数。
AI研习社
2018/12/28
1.4K0
博客 | MIT—线性代数(下)
线性代数的学习方法
下文是参考文献 [1] 中所刊登的《关于线性代数的学习改进方法》内容摘录(为了便于阅读,排版和部分内容做了少量修订)。
老齐
2021/10/11
6260

相似问题

无法从另一台计算机连接到Geth节点RPC

170

无法从android okhttp3连接到节点websocket

116

我无法从ESP8266连接到pushbullet

18

为什么我无法从另一台计算机连接到openfire服务器?

22

无法从另一台计算机连接到python服务器

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档