qqmath函数使用lmer软件包的输出产生很好的随机效应图.也就是说,qqmath非常适合绘制层次模型中的截距及其在点估计周围的误差.下面使用名为Dyestuff的lme4包中的内置数据,给出了lmer和qqmath函数的一个示例.代码将使用ggmath函数生成分层模型和一个漂亮的图.
library("lme4")
data(package = "lme4")
# Dyestuff
# a balanced one-way classiï¬cation of Yield
# from samples produced from six Batches
summary(Dyestuff)
# Batch is an example of a random effect
# Fit 1-way random effects linear model
fit1 <- lmer(Yield ~ 1 + (1|Batch), Dyestuff)
summary(fit1)
coef(fit1) #intercept for each level in Batch
# qqplot of the random effects with their variances
qqmath(ranef(fit1, postVar = TRUE), strip = FALSE)$Batch
Run Code Online (Sandbox Code Playgroud)
最后一行代码产生了每个截距的非常好的图,每个估计周围都有误差.但格式化qqmath函数似乎非常困难,而且我一直在努力格式化情节.我想出了一些我无法回答的问题,我认为如果他们使用lmer/qqmath组合,其他人也可以从中受益:
到目前为止,在qqmath函数中添加任何附加选项会产生错误,如果它是标准图,我不会得到错误,所以我很茫然.
另外,如果你觉得有一个更好的包装/功能来绘制来自lmer输出的拦截,我很乐意听到它!(例如,你能用dotplot做点1-3吗?)
谢谢.
编辑:如果可以合理格式化,我也可以使用替代的dotplot.我只是喜欢ggmath情节的外观,所以我开始提出一个问题.
我希望创建GUI,从用户接收一些输入(例如性别,年龄和种族作为可点击类别),然后为每个输入分配用户ID(将在GUI中显示为输出).在幕后将是GUI使用此用户输入创建的数据集(在此示例中,它将是4个变量:用户ID,性别,年龄和种族).
有没有人之前创建过这样的GUI?任何R包或代码推荐?
谢谢!
我确信在R中这是一个简单的命令,但由于某种原因,我很难找到解决方案.
我正在尝试在R中运行一堆交叉表(使用table()命令),每个选项卡有两列(处理和不处理).我想知道列之间的差异是否对于所有行而言彼此显着不同(行是调查中的一些答案选择).我对整体意义不感兴趣,只是在交叉表比较治疗与不治疗之间.
这种类型的分析在SPSS中很容易(下面链接说明我在说什么),但我似乎无法让它在R中工作.你知道我能做到吗?
编辑:以下是关于我的意思的R的一个例子:
treatmentVar <-c(0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1) # treatment is 1 or 0
question1 <-c(1,2,2,3,1,1,2,2,3,1,1,2,2,3,1,3) #choices available are 1, 2, or 3
Questiontab <- table(question1, treatmentVar)
Questiontab
Run Code Online (Sandbox Code Playgroud)
我有像这样的表^(由treatmentVar上的列百分比),我想看看从治疗0到治疗1的每个问题选择(行)之间是否存在显着差异.所以在上面的例子中,我会想知道4和2(第1行),第3和第3行(第2行)以及第1和第3行(第3行)之间是否存在显着差异.所以在这个例子中,question1的选择对于选择1和3可能是显着不同的(因为差异是2)但是选择2的差异不是因为差异是零.最终,我试图确定这种重要性.我希望有所帮助.
谢谢!
我创建了一个基于似然函数和模拟的概率模拟,所有这些都可以用下面的代码复制。
这是似然函数:
probit.ll <- function(par,ytilde,x) {
a <- par[1]
b <- par[2]
return( -sum( pnorm(ytilde*(a + b*x),log=TRUE) ))
}
Run Code Online (Sandbox Code Playgroud)
这是进行估计的函数:
my.probit <- function(y,x) {
# use OLS to get start values
par <- lm(y~x)$coefficients
ytilde <- 2*y-1
# Run optim
res <- optim(par,probit.ll,hessian=TRUE,ytilde=ytilde,x=x)
# Return point estimates and SE based on the inverse of Hessian
names(res$par) <- c('a','b')
se=sqrt(diag(solve(res$hessian)))
names(se) <- c('a','b')
return(list(par=res$par,se=se,cov=solve(res$hessian)))
}
Run Code Online (Sandbox Code Playgroud)
这是生成模拟模型的函数:
probit.data <- function(N=100,a=1,b=1) {
x <- rnorm(N)
y.star <- a + b*x + rnorm(N)
y …Run Code Online (Sandbox Code Playgroud) 如何在R中绘制图,以便变量的值沿X轴显示,变量名沿Y轴垂直移动?最终,绘图应该看起来垂直,Y轴上的变量名称和X轴上的值.
下面的代码表面上会这样做,但问题是实际的绘图值不会随轴翻转.意思是,该图仍然构造为名称沿着X轴并且值沿着Y轴.
以下变量:
value =数字的列向量
name =与每个数字对应的名称列
plot(value, axes=F, xlab="", ylab= "", type= "b", xlim=c(-5, 50), ylim=c(0, 8))
axis(1)
axis(2, at = 1:length(name), labels = name, las=1, pos=-3.0,cex.axis=.65 )
Run Code Online (Sandbox Code Playgroud)
谢谢!
我已经创建了一个存储在20x7矩阵中的模拟值矩阵(对7列数字进行了20次观察;矩阵称为输出).列从模拟输出.
运行模拟后,我包含了列名:
colnames(output) <- c('level', 'value1','value2','value3',
'value4','value5','value6')
Run Code Online (Sandbox Code Playgroud)
矩阵看起来很干净.观察时:
output
Run Code Online (Sandbox Code Playgroud)
有没有办法从矩阵中绘制这些列?我已经尝试了下面的代码(以及其他变体),但它不起作用.
plot(level$output, value1$output)
Run Code Online (Sandbox Code Playgroud)
谢谢!