小编Del*_*eet的帖子

使用 R 包 rms 中的限制三次样条报告的系数

我试图理解rmsR 中包的一些输出,其中我在分位数回归中使用受限三次样条。我在理解输出时遇到的问题可能更多地与受限三次样条有关,而不是与我在分位数回归中使用它们的事实有关。我拟合一个k = 3 节的受限三次样条函数,如下所示:

fitted.model <- Rq(y ~ rcs(x, 3), x=TRUE, y=TRUE, tau=0.50, data=d)
Run Code Online (Sandbox Code Playgroud)

我很困惑的是

coef(fitted.model)

显示:

  Intercept        x       x' 

39.67901296  0.31760226  0.01875437 
Run Code Online (Sandbox Code Playgroud)

然而

Function(fitted.model)

显示:

function(x = 56.15) {39.679013+0.31760226* x+1.2554621e-05*pmax(x-38.45,0)^3-2.3161627e-05*pmax(x-56.15,0)^3+1.0607006e-05*pmax(x-77.1,0)^3 }
Run Code Online (Sandbox Code Playgroud)

给定RMS书中的公式2.24和2.25,我预计所获得的系数β 0、β 1和β 2(即β k-1coef(fitted.model) )将是用 所示的前三个(即k-1)系数Formula(fitted.model)。截距 (β 0 ) 和 X 的系数 (β 1 ) 显然相同,但公式中显示的 β 2与 中的第二个系数不同coef(fitted.model)。我误解了什么?

regression r

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

django static admin 404 for icon_clock.gif和icon_calender.gif

我可以找到一个先前的问题:

使用Django和s3boto,一些管理员图像(icon_clock.gif&icon_calendar.gif)不显示

但它非常过时(2013年).我在Ubuntu 14.04.3 LTS上运行django 1.9.1,apache,wsgi.

首先问题是jquery文件丢失了,但是在修复的问题中运行collectstatic(manage.py)virtualenv.但是,仍然缺少两个管理媒体文件.404 URL调用是:

http://example.com/missing-admin-media-prefix/img/icon_calendar.gif
http://example.com/missing-admin-media-prefix/img/icon_clock.gif
Run Code Online (Sandbox Code Playgroud)

奇怪的URL前缀导致人们找到与该问题相关的几个非常古老的问题,但似乎已经为django 1.9.1折旧了.

settings.py看起来像这样:

STATIC_URL = '/static/'
#ADMIN_MEDIA_PREFIX = '/static/admin/'
#MEDIA_URL = "/media/"
#MEDIA_ROOT = "/home/user/app_root/media/"
STATIC_ROOT = "/home/user/app_root/static/"
Run Code Online (Sandbox Code Playgroud)

已经过时的线条是我在与同一问题相关的过时问题中找到的建议(没有工作).所有其他静态文件都可以正常工作,包括大多数管理文件.

我已经没想完了.

python django

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

Django拒绝接受我的FloatField的一次性默认值

我有一个班级,我正在尝试添加一个新的FloatField.Django想要一个默认值来填充现有的行(合理的).但是,它拒绝接受我给它的任何价值.

You are trying to add a non-nullable field 'FIELDNAME' to CLASS without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
 1) Provide a one-off default now (will be set on all existing rows with a null value for this column)
 2) Quit, and let me add a default in models.py
Select an option: -1
Please select a valid option: -1
Please select a valid option: -1
Please …
Run Code Online (Sandbox Code Playgroud)

python django

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

通过基因id获得SNP列表的最佳方法?

我有一个长基因数据框架和各种形式的id(例如OMIM,Ensembl,Genatlas).我想获得与每个基因相关的所有SNP的列表.(这与这个问题相反.)

到目前为止,我发现的最佳解决方案是使用biomaRt包(bioconductor).我需要在这里做一种查找的例子.符合我的目的,这是我的代码:

library(biomaRt)

#load the human variation data
variation = useEnsembl(biomart="snp", dataset="hsapiens_snp")

#look up a single gene and get SNP data
getBM(attributes = c(
  "ensembl_gene_stable_id",
  'refsnp_id',
  'chr_name',
  'chrom_start',
  'chrom_end',
  'minor_allele',
  'minor_allele_freq'),
  filters = 'ensembl_gene',
  values ="ENSG00000166813",
  mart = variation
)
Run Code Online (Sandbox Code Playgroud)

这将输出一个如下所示的数据框:

  ensembl_gene_stable_id  refsnp_id chr_name chrom_start chrom_end minor_allele minor_allele_freq
1        ENSG00000166813  rs8179065       15    89652777  89652777            T          0.242412
2        ENSG00000166813  rs8179066       15    89652736  89652736            C          0.139776
3        ENSG00000166813 rs12899599       15    89629243  89629243            A          0.121006
4 …
Run Code Online (Sandbox Code Playgroud)

r bioinformatics bioconductor biomart

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

如何提取 Tidymodels 生成的 GLMNET 系数

我使用tidymodels估计了glmnet逻辑回归。但我无法弄清楚tidymodels中密切相关的两件事:

  • a) 如何提取估计系数
  • b) 保存估计模型以供将来生产使用。

以下是伪模型的代码。我尝试过tidy()coef()predict()都失败了。任何帮助都感激不尽。谢谢。

library(tidymodels)
#> -- Attaching packages --------------------------------------------------------------------------------------------------------------------------- tidymodels 0.1.0 --
#> v broom     0.7.0      v recipes   0.1.13
#> v dials     0.0.8      v rsample   0.0.7 
#> v dplyr     1.0.0      v tibble    3.0.3 
#> v ggplot2   3.3.2      v tune      0.1.1 
#> v infer     0.5.2      v workflows 0.1.2 
#> v parsnip   0.1.2      v yardstick 0.0.7 
#> v purrr     0.3.4
#> -- Conflicts ------------------------------------------------------------------------------------------------------------------------------ tidymodels_conflicts() --
#> x …
Run Code Online (Sandbox Code Playgroud)

r glmnet tidymodels

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

从 R 下载 Google Drive 目录中的所有文件和子目录

一些先前的相关问题1、2、3 ),但没有什么是我想要的,而且我无法让Jenny Bryan 在 2018 年发布的代码示例正常工作。

我有一个与我共享的文件夹,其中包含一些大文件。文件是嵌套的。所以我想递归到子目录并获取每个子目录中的所有文件。就我而言,只有两层,但如果有一种适用于任意数量层的方法就更好了。

最明显的尝试命令就是告诉它下载文件夹,希望它能找出子结构:

#load the libraries
library(tidyverse)
library(googledrive)

#folder link to id
#hidden for privacy reasons
jp_folder = "https://drive.google.com/drive/folders/XXXXX" 
folder_id = drive_get(as_id(jp_folder))

#download in entirety
drive_download(folder_id)
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用,因为它显然无法处理文件夹:

> drive_download(folder_id)
Error: Not a recognized Google MIME type:
  * application/vnd.google-apps.folder
Run Code Online (Sandbox Code Playgroud)

我尝试通过进入每个子目录来避免此问题:

#load the libraries
library(tidyverse)
library(googledrive)

#folder link to id
#hidden for privacy reasons
jp_folder = "https://drive.google.com/drive/folders/XXXXX" 

#get the id data frame
folder_id = drive_get(as_id(jp_folder))

#find files in folder …
Run Code Online (Sandbox Code Playgroud)

r

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

用于公式的eval解析的包装函数

我有一个函数输入data.frame并输出它的残差版本,并将一些选定的变量作为预测变量.

residuals.DF = function(data, resid.var, suffix="") {
  lm_f = function(x) {
    x = residuals(lm(data=data, formula= x ~ eval(parse(text=resid.var))))
  }
  resid = data.frame(apply(data,2,lm_f))
  colnames(resid) = paste0(colnames(data),suffix)
  return(resid)
}

set.seed(31233)
df = data.frame(Age = c(1,3,6,7,3,8,4,3,2,6),
                Var1 = c(19,45,76,34,83,34,85,34,27,32),
                Var2 = round(rnorm(10)*100))

df.res = residuals.DF(df, "Age", ".test")
df.res
        Age.test   Var1.test  Var2.test
1  -1.696753e-17 -25.1351351  -90.20582
2  -1.318443e-19  -0.8108108   31.91892
3  -5.397735e-18  27.6756757   84.10603
4  -5.927747e-18 -15.1621622 -105.83160
5  -3.807699e-18  37.1891892  -57.08108
6  -6.457759e-18 -16.0000000  -25.76923
7   5.117344e-17  38.3513514  -65.01871
8  -3.807699e-18 -11.8108108   35.91892 …
Run Code Online (Sandbox Code Playgroud)

r

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

使用geom_point()避开位置,x =连续,y =因数

我制作了一个函数,可以一次绘制来自多个因子分析的载荷,也可以绘制变量不完全重叠(或根本不重叠)的载荷。它可以正常工作,但有时因子负载在各个分析中都是相同的,这意味着这些点会相互绘制。

library(pacman)
p_load(devtools, psych, stringr, plotflow)
source_url("https://raw.githubusercontent.com/Deleetdk/psych2/master/psych2.R")

loadings.plot2 = function(fa.objects, fa.names=NA) {
  fa.num = length(fa.objects) #number of fas

  #check names are correct or set automatically
  if (length(fa.names)==1 & is.na(fa.names)) {
    fa.names = str_c("fa.", 1:fa.num)
  }
  if (length(fa.names) != fa.num) {
    stop("Names vector does not match the number of factor analyses.")
  }

  #merge into df
  d = data.frame() #to merge into
  for (fa.idx in 1:fa.num) { #loop over fa objects
    loads = fa.objects[[fa.idx]]$loadings
    rnames = rownames(loads)
    loads = as.data.frame(as.vector(loads))
    rownames(loads) = …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

使用 dplyr 或 pool 并行处理和查询 SQL:MySQL 服务器已经消失

有几个早期的相关问题,但没有一个为我解决问题:

我的用例如下:我有一个需要绘制的大型数据数据库。由于对数据和绘图本身进行一些必要的预处理(ggplot2),每个绘图都需要几秒钟的时间来创建。我需要做大量的情节。我的想法是,我将通过 dplyr 连接到数据库,而不将所有数据下载到内存中。然后我有一个函数来获取要绘制的数据的子集。这种方法在使用单线程时工作得很好,但是当我尝试使用并行处理时,我遇到了与连接相关的 SQL 错误MySQL server has gone away

现在,我最近在 Python 中解决了同样的问题,在这种情况下,解决方案只是终止函数内的当前连接,这会强制建立一个新连接。我使用Django 的connection.close()where is 来完成此操作。connectiondjango.db

我的问题是我找不到与此方法等效的 R 方法。当我找到R 的池包时,我以为我已经找到了解决方案:

该包支持在 R 中为各种类型的对象创建对象池,从而降低获取对象的计算成本。目前唯一支持的池对象是DBI连接(DBI有关更多信息,请参阅包),它可用于直接通过DBI或通过dplyr. 然而,该类Pool足够通用,足以允许池化任何 R 对象,前提是有人适当地实现了后端(创建对象工厂类和所有必需的方法)——一个关于如何执行此操作的说明很快就会发布。

我的代码太大,无法在这里发布,但本质上,它看起来像这样:

#libraries loaded as necessary

#connect to the db in some kind of way
#with dplyr
db = src_mysql(db_database, username = db_username, password = …
Run Code Online (Sandbox Code Playgroud)

mysql parallel-processing r

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

用心理包模拟SEM数据

我用psych包装模拟SEM(结构方程模型)的数据.我使用了使用psych包来生成和测试结构模型的第17页上给出的代码.代码是

library(psych)
set.seed(42)
fx <- matrix(c(0.9, 0.8, 0.7, rep(0, 9), 0.7, 0.6, 0.5, rep(0, 9), 0.6, 0.5, 0.4), ncol = 3)
rownames(fx) <- paste("x", 1:9, sep="")
fy <- matrix(c(0.6, 0.5, 0.4), ncol=1)
rownames(fy) <- paste("y", 1:3, sep="")
Phi  <- matrix(c(1, 0.48, 0.32, 0.4, 0.48, 1, 0.32, 0.3, 0.32, 0.32, 1, 0.2, 0.4, 0.3, 0.2, 1), ncol = 4)
twelveV <- sim.structure(fx=fx, Phi=Phi, fy=fy, n=100, raw=TRUE)
round(twelveV$model, 2)
round(twelveV$model-twelveV$r, 2)
twelveV$observed
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用sem包来分析模拟数据.代码是

sem.mod <- structure.sem(twelveV$model) …
Run Code Online (Sandbox Code Playgroud)

simulation r

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

如何从Google Maps API中覆盖数据?

我一直无法为此找到方法.我想刮掉以下两个网站:

第一个是所有丹麦邮政编码的地图和每个(近期)移民的比例.此外,如果点击区域,则有国家区域.

第二个是每个丹麦投票区的年龄,收入和投票结果等社会经济信息的综合图.看起来有几百个.可以单击条目,但没有效果.但是有一个可能有用的onmouseover效应.

检查请求 我做的第一件事是在打开页面时检查浏览器发送的请求.为此,我使用Firefox内置的F12菜单.此分析表明没有有用的.json文件被传输,这很容易被删除.相反,两个站点都发送构成地图的图像文件(.png),有或没有叠加.

这打开了获取数据的一种方式,即通过以高分辨率(即缩放级别)下载所有这些图像,然后将它们与算法一起重新组合在一起.存在这种问题的算法并且例如在基因组学中使用.

站点1 当单击其中一个区域时,会弹出一个弹出窗口.当发生这种情况时,浏览器会发送获取请求,例如(Skagen,Jutland最北部,ZIP = 9990 [此处列出]):

http://maps.googleapis.com/maps/api/js/LayersService.GetFeature?1sft%3A1uHHijeWypO-5FlUoVWEbyBcQY8AoM4mHVIqOo182&2s33%3A4611686018427392936%232492_5032_40_592_732_329&3sen-US&4m2&1ssg&2s&4m2&1ssc&2sgeometry&4m2&1sy&2s2&callback=_xdc_._1ju85&token=51906
Run Code Online (Sandbox Code Playgroud)

响应是包含一些数据的代码文件.对于上面的一个:

/**/_xdc_._1ju85 && _xdc_._1ju85( [0,[0,0],[["maps_api.col0\u003e\u003e0.Postnummer","9990"],["maps_api.col1\u003e\u003e0.Danmark","7800"],["maps_api.col2\u003e\u003e0.Nordeuropa (uden DK)","99"],["maps_api.col3\u003e\u003e0.Vesteuropa","36"],["maps_api.col4\u003e\u003e0.Østeuropa","275"],["maps_api.col5\u003e\u003e0.Sydeuropa","13"],["maps_api.col6\u003e\u003e0.Nordamerika","4"],["maps_api.col7\u003e\u003e0.Syd- og Mellemamerika","0"],["maps_api.col8\u003e\u003e0.Asien","75"],["maps_api.col9\u003e\u003e0.Afrika","29"],["maps_api.col10\u003e\u003e0.Australien/New Zealand","0"],["maps_api.col11\u003e\u003e0.I alt","8351"],["maps_api.col12\u003e\u003e0.Land2","Rumænien"],["maps_api.col13\u003e\u003e0.Indbyggere 2","205"],["maps_api.col14\u003e\u003e0.Land3","Polen"],["maps_api.col15\u003e\u003e0.Indbyggere3","44"],["maps_api.col16\u003e\u003e0.Land4","Sverige"],["maps_api.col17\u003e\u003e0.Indbyggere4","34"],["maps_api.col18\u003e\u003e0.Land5","Tyskland"],["maps_api.col19\u003e\u003e0.Indbyggere5","26"],["maps_api.col20\u003e\u003e0.Land6","Norge"],["maps_api.col21\u003e\u003e0.Indbyggere6","24"],["maps_api.col22\u003e\u003e0.Land7","Thailand"],["maps_api.col23\u003e\u003e0.Indbyggere7","23"],["maps_api.col24\u003e\u003e0.Land8","Syrien"],["maps_api.col25\u003e\u003e0.Indbyggere8","20"],["maps_api.col26\u003e\u003e0.Land9","Storbritannien"],["maps_api.col27\u003e\u003e0.Indbyggere9","18"],["maps_api.col28\u003e\u003e0.Land10","Sudan"],["maps_api.col29\u003e\u003e0.Indbyggere10","17"],["maps_api.col30\u003e\u003e0.Land11","Litauen"],["maps_api.col31\u003e\u003e0.Indbyggere11","13"],["maps_api.col1\u003e\u003e1.geometry_vertex_count","60"],["maps_api.col2\u003e\u003e1.UUID","til fremtidig brug"],["maps_api.col11\u003e\u003e1.POSTBYNAVN","Skagen"],["maps_api.col5\u003e\u003e2.BYNAVN","Skagen"],["maps_api.col1\u003e\u003e3.1 Dansk","7800"],["maps_api.col2\u003e\u003e3.2 Indvandrere","500"],["maps_api.col3\u003e\u003e3.3 Efterkommere","51"],["maps_api.col4\u003e\u003e3.Dansk andel","93%"],["maps_api.col5\u003e\u003e3.Indvandrere andel","6%"],["maps_api.col6\u003e\u003e3.Efterkommere andel","1%"],["maps_api.col7\u003e\u003e3.procent","7%"],["maps_api.col1\u003e\u003e4.Farveland","4"],["maps_api.col1\u003e\u003e5.FARVE","44"],["description","\u003cdiv class=\"googft-info-window\"\u003e\n\u003cb\u003ePostnummer:\u003c/b\u003e 9990\u003cbr\u003e\n\u003cb\u003eDanmark:\u003c/b\u003e 7800\u003cbr\u003e\n\u003cb\u003eNordeuropa (uden DK):\u003c/b\u003e 99\u003cbr\u003e\n\u003cb\u003eVesteuropa:\u003c/b\u003e 36\u003cbr\u003e\n\u003cb\u003eØsteuropa:\u003c/b\u003e 275\u003cbr\u003e\n\u003cb\u003eSydeuropa:\u003c/b\u003e 13\u003cbr\u003e\n\u003cb\u003eNordamerika:\u003c/b\u003e 4\u003cbr\u003e\n\u003cb\u003eSyd- og Mellemamerika:\u003c/b\u003e 0\u003cbr\u003e\n\u003cb\u003eAsien:\u003c/b\u003e 75\u003cbr\u003e\n\u003cb\u003eAfrika:\u003c/b\u003e 29\n\u003c/div\u003e"]]] )
Run Code Online (Sandbox Code Playgroud)

它有很多Unicode,删除它我们得到:

/**/_xdc_._1ju85 && _xdc_._1ju85( [0,[0,0],[["maps_api.col0\>\>0.Postnummer","9990"],["maps_api.col1\>\>0.Danmark","7800"],["maps_api.col2\>\>0.Nordeuropa (uden DK)","99"],["maps_api.col3\>\>0.Vesteuropa","36"],["maps_api.col4\>\>0.Østeuropa","275"],["maps_api.col5\>\>0.Sydeuropa","13"],["maps_api.col6\>\>0.Nordamerika","4"],["maps_api.col7\>\>0.Syd- og Mellemamerika","0"],["maps_api.col8\>\>0.Asien","75"],["maps_api.col9\>\>0.Afrika","29"],["maps_api.col10\>\>0.Australien/New Zealand","0"],["maps_api.col11\>\>0.I alt","8351"],["maps_api.col12\>\>0.Land2","Rumænien"],["maps_api.col13\>\>0.Indbyggere 2","205"],["maps_api.col14\>\>0.Land3","Polen"],["maps_api.col15\>\>0.Indbyggere3","44"],["maps_api.col16\>\>0.Land4","Sverige"],["maps_api.col17\>\>0.Indbyggere4","34"],["maps_api.col18\>\>0.Land5","Tyskland"],["maps_api.col19\>\>0.Indbyggere5","26"],["maps_api.col20\>\>0.Land6","Norge"],["maps_api.col21\>\>0.Indbyggere6","24"],["maps_api.col22\>\>0.Land7","Thailand"],["maps_api.col23\>\>0.Indbyggere7","23"],["maps_api.col24\>\>0.Land8","Syrien"],["maps_api.col25\>\>0.Indbyggere8","20"],["maps_api.col26\>\>0.Land9","Storbritannien"],["maps_api.col27\>\>0.Indbyggere9","18"],["maps_api.col28\>\>0.Land10","Sudan"],["maps_api.col29\>\>0.Indbyggere10","17"],["maps_api.col30\>\>0.Land11","Litauen"],["maps_api.col31\>\>0.Indbyggere11","13"],["maps_api.col1\>\>1.geometry_vertex_count","60"],["maps_api.col2\>\>1.UUID","til fremtidig brug"],["maps_api.col11\>\>1.POSTBYNAVN","Skagen"],["maps_api.col5\>\>2.BYNAVN","Skagen"],["maps_api.col1\>\>3.1 Dansk","7800"],["maps_api.col2\>\>3.2 Indvandrere","500"],["maps_api.col3\>\>3.3 Efterkommere","51"],["maps_api.col4\>\>3.Dansk andel","93%"],["maps_api.col5\>\>3.Indvandrere andel","6%"],["maps_api.col6\>\>3.Efterkommere andel","1%"],["maps_api.col7\>\>3.procent","7%"],["maps_api.col1\>\>4.Farveland","4"],["maps_api.col1\>\>5.FARVE","44"],["description","\<div class=\"googft-info-window\"\>\n\<b\>Postnummer:\</b\> 9990\<br\>\n\<b\>Danmark:\</b\> 7800\<br\>\n\<b\>Nordeuropa (uden DK):\</b\> 99\<br\>\n\<b\>Vesteuropa:\</b\> 36\<br\>\n\<b\>Østeuropa:\</b\> …
Run Code Online (Sandbox Code Playgroud)

google-maps web-scraping

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

在不复制对象的情况下复制名称?

我找不到关于此的先前问题,但这个问题相当接近。

我经常创建新对象并希望它们与其他对象具有相同的名称 ( names, colnames, rownames)。通常,我会使用names, 或rownames+ colnames,但我厌倦了这样做,我想要一个更好的解决方案。我还想要一个允许部分匹配的解决方案,所以我需要一个新函数。我的问题是要完全正确显然并不容易。

首先是一个辅助函数:

get_dims = function(x) {
  if (is.null(dim(x))) {
    return(length(x))
    } else {
    return(dim(x))
  }
}
Run Code Online (Sandbox Code Playgroud)

这将获取任何对象的尺寸。dim()返回NULL原子对象(向量和列表),而它实际上应该只返回它们的长度。

接下来,我们组成一些最小的测试数据:

t = matrix(1:9, nrow=3)
t2 = t
rownames(t) = LETTERS[1:3]; colnames(t) = letters[1:3]
Run Code Online (Sandbox Code Playgroud)

检查:

> t
  a b c
A 1 4 7
B 2 5 8
C 3 6 9
> t2
     [,1] [,2] [,3]
[1,]    1    4    7
[2,] …
Run Code Online (Sandbox Code Playgroud)

r

-1
推荐指数
1
解决办法
121
查看次数