小编tim*_*tim的帖子

R中的自定义对比:对比系数矩阵或对比矩阵/编码方案?怎么去那里?

自定义对比在分析中被广泛使用,例如:"这三级因子的1级和3级DV值是否显着不同?"

直观地说,这种对比用细胞方式表示为:

c(1,0,-1)
Run Code Online (Sandbox Code Playgroud)

这些对比中的一个或多个(作为列绑定)形成对比系数矩阵,例如

mat = matrix(ncol = 2, byrow = TRUE, data = c(
    1,  0,
    0,  1,
   -1, -1)
)
     [,1] [,2]
[1,]    1    0
[2,]    0    1
[3,]   -1   -1
Run Code Online (Sandbox Code Playgroud)

然而,当涉及运行系数矩阵指定的这些对比时,在网络和书籍中存在许多(显然是矛盾的)信息.我的问题是哪些信息是正确的?

权利要求1:对比(因子)采用系数矩阵

在一些示例中,示出了用户可以通过一个contrasts()或多个C()函数直接使用直观对比度系数矩阵.所以它很简单:

contrasts(myFactor) <- mat
Run Code Online (Sandbox Code Playgroud)

权利要求2:变换系数以创建编码方案

在其他地方(例如UCLA统计数据),我们被告知系数矩阵(或基础矩阵)必须在使用前从系数矩阵转换为对比矩阵.这包括采用系数矩阵变换的逆:(mat')?¹或者,在Rish中:

contrasts(myFactor) = solve(t(mat))
Run Code Online (Sandbox Code Playgroud)

该方法需要用矩阵填充矩阵,用于截距.为了避免这种情况,一些网站建议使用可以处理非方形矩阵的广义逆函数,即MASS::ginv()

contrasts(myFactor) = ginv(t(mat))
Run Code Online (Sandbox Code Playgroud)

第三种选择:通过变换预乘,取逆,并乘以变换后乘

在其他地方(例如来自SPSS支持的说明),我们学习正确的代数是:(mat'mat)-¹ mat'

告诉我,创建对比矩阵的正确方法应该是:

x = solve(t(mat)%*% mat)%*% t(mat)
     [,1] [,2] [,3]
[1,]    0    0    1
[2,]    1    0   -1 …
Run Code Online (Sandbox Code Playgroud)

r matrix anova

11
推荐指数
1
解决办法
1464
查看次数

如何抑制表中的零打印(zero.print =""不起作用)

我有NAs的对角矩阵和我想要隐藏的零.

na.print =""工作正常,但是零.print ="." 似乎把0.00视为!= 0?

这是一个打印输出的可运行示例,因此您可以看到我的意思:

x <- matrix(c(0.01, NA, NA, NA, 0.00, 0.00, NA, NA, 0.00, 0.00, -0.01, NA, 0.00, 0.00, 0.00, 0.00), nrow=4, byrow=TRUE)
x
         [,1] [,2]  [,3] [,4]
    [1,] 0.01   NA    NA   NA
    [2,] 0.00    0    NA   NA
    [3,] 0.00    0 -0.01   NA
    [4,] 0.00    0  0.00    0

print.table(x, na.print="", zero.print=".")
         [,1]  [,2]  [,3]  [,4] 
    [1,]  0.01                  
    [2,]  0.00  0.00            
    [3,]  0.00  0.00 -0.01      
    [4,]  0.00  0.00  0.00  0.00
Run Code Online (Sandbox Code Playgroud)

按照下面的有用答案(谢谢大家!),并基于print.table中的显式选择而不是zero.print项目中的任何项目失败(x == round(x)),这里有一个适用的版本浮点.我为数据帧打印任务编写了它,但它适用于矩阵.

print.dataframe <- function (x, …
Run Code Online (Sandbox Code Playgroud)

r pretty-print

9
推荐指数
1
解决办法
1777
查看次数

使用R从Google学者那里获取论文

使用google-scholar和R,我想知道谁在引用某篇论文.

现有的包(如学者)面向H指数分析:研究人员的统计数据.

我想给目标纸作为输入.一个示例网址是:

https://scholar.google.co.uk/scholar?oi=bibs&hl=en&cites=12939847369066114508

然后R应该抓住这些引文页面(谷歌学者分页这些),然后返回一系列引用目标的论文(最多500个或更多引用).然后我们在标题中搜索关键词,列出期刊和引用作者等.

关于如何做到这一点的任何线索?或者是从字面上刮下每一页?(我可以使用复制和粘贴进行一次性操作).

看起来这应该是一个普遍有用的功能,如播种系统评论,所以有人添加到一个包可能会增加他们的H :-)

r web-scraping google-scholar

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

使用R在一个图上绘制多个线段

我如何复制这种图形样式,在一个图形上有多个图形,最好是如下附带的图例.

我尝试了"facet"的概念,但是ggplot2和trellis:xyplot都将facet视为单独的面板而不是重叠的图.

我可以使用简单的plot plot()和line()来做到这一点.但是使用ggplot2和woudl喜欢在该包中的一个图上获得多行.

这是一些长形式的示例数据(使用名为"Graphclick"的漂亮应用程序从绘图中捕获)

comp <- read.table(pipe("pbpaste"), header=T, sep=',')

company, year, sales
Apple,1975.003,17298.457
Apple,1977.302,16784.502
Apple,1978.314,17298.457
Apple,1980.246,20730.098
Apple,1981.533,27608.426
Apple,1984.293,40862.852
Apple,1986.408,50468.617
Apple,1987.328,48236.188
Apple,1988.892,35676.547
Apple,1989.904,34616.582
Apple,1991.192,44732.742
Apple,1992.387,44732.742
Apple,1993.399,39055.324
Apple,1995.791,37894.922
Apple,1996.895,39648.746
Apple,1998.274,52804.367
Apple,1999.378,61399.512
Apple,2001.770,2.350e5
Apple,2005.265,7.735e5
Toshiba,1999.378,86856.6
Toshiba,2001.862,1.192e5
Toshiba,2004.069,1.495e5
Toshiba,2004.069,1.495e5
IBM,1975.003,22019.092
IBM,1975.830,27195.193
IBM,1976.934,30682.320
IBM,1978.130,31148.527
IBM,1980.430,35676.547
IBM,1981.625,35676.547
IBM,1983.005,39648.746
IBM,1985.305,40862.852
IBM,1986.408,46102.508
IBM,1987.512,64241.156
IBM,1989.996,75832.898
IBM,1991.100,84276.039
IBM,1992.295,85556.641
IBM,1993.307,79342.539
IBM,1994.779,79342.539
IBM,1995.791,84276.039
IBM,1996.895,95082.484
IBM,1996.895,95082.484
Commodore,1975.003,33588.051
Commodore,1975.830,34616.582
Commodore,1977.118,25219.982
Commodore,1978.130,23388.229
Commodore,1979.326,25992.234
Commodore,1980.521,21689.514
Commodore,1981.717,25219.982
Commodore,1984.201,6999.029
Commodore,1985.213,1670.460
Commodore,1986.408,1458.447
Run Code Online (Sandbox Code Playgroud)

随着时间的推移计算http://www.asymco.com/wp-content/uploads/2012/01/Screen-Shot-2012-01-18-at-1-18-4.31.31-PM.png

plot r ggplot2

5
推荐指数
2
解决办法
9526
查看次数

如何获得给定包所需的最低 R 版本?

如何检查软件包列表需要哪个版本的 R?理想情况下是这样的

minimumRVersion <- function(packageList = c(), return=c("list", "min", "mine")) {
# code to collate a list of minimum versions of R
# required for the listed packages.
# Optionally return min(list) or "is my R high enough?
return(result) 
}

minVersion("RcppEigen")
# 2.15.1

minVersion(c("RcppEigen","OpenMx"), "min")
# 3.0
Run Code Online (Sandbox Code Playgroud)

r

5
推荐指数
1
解决办法
174
查看次数

roxygen2 包是否支持表格?

我想尝试在 .Rd 文件中使用降价。我想我在函数文档的末尾得到了 @md 使它解析降价。但是没有看到这个表格出现,原始文本也没有出现... roxygen 支持表格吗?

#' makes bar
#' @description
#' prints 2 x
#' @details see this table
#' 
#' |a |b |c |
#' |--|--|--|
#' |1 |3 |4 |
#'
#' @param x how much foo
#' @return - 
#' @export
#' @family tmp
#' @examples
#' foo(2)
#' @md
foo <- function(x) {
    print(2 * x)
}
Run Code Online (Sandbox Code Playgroud)

markdown r roxygen2

5
推荐指数
1
解决办法
738
查看次数

如何测试对象是否是基础R中的公式?

R有许多用于测试对象类型的帮助器,例如 is.character(x)

是否有相同的(奇怪的缺失)is.formula(x)

(PS:我看到至少有一个包实现了这个外部基础R)

r

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