臨床統計もおもしろいですよ、その1at HOSP
臨床統計もおもしろいですよ、その1 - 暇つぶし2ch889:卵の名無しさん
18/10/28 06:31:16.86 Q5x4cT59.net
>>826
>>803
残念ながら俺、東大卒じゃないのよ。
1期校は滑り止めに受けた理一通ったけど行かなかった。

890:卵の名無しさん
18/10/28 07:07:44.53 Q5x4cT59.net
>>826
答えるもなにも問題を書けよ、リンクは踏まないから。
最近のトピックを題材にした問題
これ答えてみ!
昨年入学者の留年者や退学者が0として、
東京医大が公式認定した裏口入学者が少なくとも今年は133人中50人、昨年が113人中19人ということになる。
裏口入学率の期待値、最頻値、およびその95%信頼区間を求めよ。
ド底辺シリツ医大卒なら無理だろうが、国立大学でていて解けないなら恥ずかしいね。

891:卵の名無しさん
18/10/28 09:59:54.67 Q5x4cT59.net
>>814
k=2
n=m+1
の特殊ケースを移植してくれた人がいた。
パラメータを変えるだけで宝の数を増やせる仕様でないのは残念。
int main(){
int i,j,P[5000],Q[5000],c,m,n,mn,Pwin,Qwin,Draw,pp,qq;
for(m=1;m<70;m++){
n=m+1;mn=m*n;
for(i=0,c=1;i<m;i++)for(j=0;j<n;j++)P[j*m+i+1]=Q[i*n+j+1]=c++;
for(i=1,Pwin=Qwin=Draw=0;i<mn;i++)for(j=i+1;j<=mn;j++){
pp=P[i]>P[j]?P[j]:P[i];
qq=Q[i]>Q[j]?Q[j]:Q[i];
if(pp>qq)Pwin++;else if(pp<qq) Qwin++;else Draw++;
}
printf("%3d*%3d: %d, %d, %d\n",m,n,Pwin,Qwin,Draw);
}
return 0;
}

892:卵の名無しさん
18/10/28 12:08:07.77 6treyEuT.net
算数の問題 と書いてあるから 間違いなく算数の問題なのだ
というわけで 回答まだぁ
それはそうとド底辺事務員の好きな高学歴スレに
宣伝して来てやったぞ
ありがたく思え
スレリンク(newsplus板:600番)-
入試の時だけ成績が良くても、その後の生活で人はダメになるんやね
国立私立問わず医学部に入学しても、その後の生活がダメダメで
国試に通らなかったり、専門医も取れなかったりすると
人としてダメダメになるんやね

893:卵の名無しさん
18/10/28 12:29:02.77 Q5x4cT59.net
treasure0 <- function(m=3,n=4,k=2){
y=1:(m*n)
(z=matrix(y,ncol=n,byrow=T))
(P=as.vector(z))
(Q=as.vector(t(z)))
PQ <- function(x){
p=q=numeric(k)
for(i in 1:k){
p[i]=which(P==x[i])
q[i]=which(Q==x[i])
}
min(p)-min(q)
}
tre=combn(m*n,k)
re=apply(tre,2,PQ)
return(c(短軸有利=sum(re<0),長軸有利=sum(re>0),同等=sum(re==0)))
}
結局、
combn(m*n,k)
ここがボトルネックなんだよなぁ。
12部屋から6部屋選ぶ組み合わせは924通りしかないのに
20部屋から10部屋だと184756通り、
30部屋から15部屋だと155117520通り、
という感じなのでどうしても時間やメモリを食う。

894:卵の名無しさん
18/10/28 13:22:21.24 Q5x4cT59.net
やはり、cは高速だな
#include<stdio.h>
int main(){
int i,j,P[10000],Q[10000],c,m,n,mn,Pwin,Qwin,Draw,pp,qq;
for(m=1;m<100;m++){
n=m+1;
mn=m*n;
for(i=0,c=1;i<m;i++)for(j=0;j<n;j++)P[j*m+i+1]=Q[i*n+j+1]=c++;
for(i=1,Pwin=Qwin=Draw=0;i<mn;i++)for(j=i+1;j<=mn;j++){
pp=P[i]>P[j]?P[j]:P[i];
qq=Q[i]>Q[j]?Q[j]:Q[i];
if(pp>qq)Pwin++;else if(pp<qq) Qwin++;else Draw++;
}
printf("%3d*%3d: %d, %d, %d\n",m,n,Pwin,Qwin,Draw);
}
return 0;
}
90* 91: 16820566, 16703175, 10214
91* 92: 17575980, 17454585, 10441
92* 93: 18356554, 18231065, 10671
93* 94: 19162841, 19033167, 10903
94* 95: 19995399, 19861448, 11138
95* 96: 20854793, 20716472, 11375
96* 97: 21741593, 21598808, 11615
97* 98: 22656376, 22509032, 11857
98* 99: 23599724, 23447725, 12102
99*100: 24572226, 24415475, 12349

895:卵の名無しさん
18/10/28 19:48:06.14 Q5x4cT59.net
>>829
このコードをもとに宝を増やすように改変したつもりで数学板投稿したらをバグを指摘された。勉強になって( ・∀・)イイ!!
このスレのド底辺からは学ぶことがないなあ。

896:卵の名無しさん
18/10/28 20:16:51.08 AAZUotga.net
## 第22回生命表(完全生命表)URLリンク(www.mhlw.go.jp)
F=c(178,32,20,12,8,8,8,8,7,7,7,7,7,7,8,10,12,13,15,16,17,19,20,22,23,24,25,27,28,30,31,32,34,36,39,41,42,45,50,56,
62,68,73,79,85,94,104,114,124,134,145,159,174,189,202,215,226,237,250,268,291,318,346,372,399,433,471,511,554,603,662,729,802,874,954,1053,1180,1332,1505,1699,1909,2143,2409,2701,3004,3310,3622,3938,4253,4531,4757,4918,5025,
5024,4876,4598,4132,3594,3025,2464,1941,1477,1085,769,525,345,217,132,76,42,22,11,5,2,1,0)
M=c(202,34,24,16,11,10,10,10,9,8,7,7,8,11,13,17,21,26,32,39,45,49,51,53,55,55,54,54,54,56,57,59,61,65,69,73,75,78,
84,93,103,113,122,131,144,159,176,195,215,236,257,283,310,340,373,411,450,488,525,568,620,688,764,839,910,994,
1081,1166,1256,1349,1450,1561,1675,1776,1885,2021,2185,2377,2594,2819,3046,3279,3504,3714,3900,4043,4116,4127,
4080,3973,3810,3580,3302,2967,2567,2123,1718,1352,1034,768,554,387,262,171,108,66,39,22,12,6,3,2,1)
LE <-function(ndx,Y,N0=10^5){
n=length(ndx)
lx=numeric(n)
lx[1]=N0
for(i in 1:(n-1))
lx[i+1] <- lx[i] - ndx[i]
nqx=ndx/lx
nLx=numeric(n)
for(i in 1:n)
nLx[i] <- mean(c(lx[i],lx[i+1]))
nLx[n]=0
Tx=rev(cumsum(rev(nLx)))
le=Tx/lx
return(round(le[Y+1],2))
}
yome = function(x){
le=LE(m,x)
round(uniroot(function(x,u0) LE(f,x)-le,c(1,100))$root)
}
y=sapply(18:80,yome)
plot(18:80,y-18:80)

897:卵の名無しさん
18/10/29 21:31:07.37 VzAgCvD5.net
さて 算数の問題です
URLリンク(m.youtube.com)
この動画は part1 が 2009年に投稿され
最終回まであと1話となっています
最終回の登校日はいつになるでしょう?
あらゆる手段を用いて求めましょう

898:卵の名無しさん
18/10/29 21:44:21.84 72tLNU2F.net
>>831
Haskellの遅延IOを使うととりあえずのメモリ不足は克服できる。
combinations :: Int -> [a] -> [[a]]
combinations 0 _ = [ [] ]
combinations n xs = [ y:ys | y:xs' <- tails xs, ys <- combinations (n-1) xs']
Prelude> take 5 $ combinations 15 [1..30]
[[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16],[1,2,3,4,5,6,7,8,9,10,11,12,13,14,17],[1,2,3,4,5,6,7,8,9,10,11,12,13,14,18],[1,2,3,4,5,6,7,8,9,10,11,12,13,14,19]]

899:卵の名無しさん
18/10/29 21:46:20.38 72tLNU2F.net
Prelude> tre = combinations 15 [1..30]
Prelude> tre !! 100000
[1,2,3,4,5,6,7,8,11,12,17,20,21,25,30]
10万個目の組み合わせも出してはく


900:れるが、処理が終わる時間が予想がつかないなぁ。



901:卵の名無しさん
18/10/29 22:12:36.39 72tLNU2F.net
>>831
min(p) - min(q)までHaskellに移植できた。
import Data.List
import Data.List.Split
k = 2
q = [1..12]
matQ = chunksOf 3 q
matP = transpose matQ
p = concat matP
combinations :: Int -> [a] -> [[a]]
combinations 0 _ = [ [] ]
combinations n xs = [ y:ys | y:xs' <- tails xs, ys <- combinations (n-1) xs']
tre = combinations 2 q
ip x1 x2 = minimum [elemIndices x1 p, elemIndices x2 p] !! 0
iq x1 x2 = minimum (elemIndices x1 q, elemIndices x2 q) !! 0
pqi x1 x2 = ip x1 x2 - iq x1 x2

902:卵の名無しさん
18/10/29 23:42:39.13 72tLNU2F.net
Haskellへの移植プログラム完成!
import Data.List
import Data.List.Split
m = 5 -- 縦マス(短軸)
n = 6 -- 横マス(長軸)
k = 5 -- 宝の数
q = [0..m*n-1]
matQ = chunksOf m q
matP = transpose matQ --行列を転置して
p = concat matP -- 配列に変換
combinations :: Int -> [a] -> [[a]]
combinations 0 _ = [ [] ]
combinations n xs = [ y:ys | y:xs' <- tails xs, ys <- combinations (n-1) xs']
treasure = combinations k q -- 宝の組み合わせ
ip y = minimum $ map(\x -> elemIndices x p!!0) y -- 宝の、配列pでのindex列を求めて最小値を返す
iq y = minimum $ map(\x -> elemIndices x q!!0) y
idxp = map ip treasure -- 宝の組み合せで実行して
idxq = map iq treasure
p_q = zipWith (-) idxp idxq -- 差をとって大小判別
p1st = length $ filter (<0) p_q -- 短軸方向探索pが先に宝をみつける
q1st = length $ filter (>0) p_q
draw = length $ filter (==0) p_q
main = do
putStrLn $ "p1st = " ++ show p1st ++ ", q1st = " ++ show q1st ++ ", draw = " ++ show draw

903:卵の名無しさん
18/10/30 00:23:28.38 Eer9XEMu.net
コンパイルしてコマンドラインから実行できるように改変(但し、エラー処理皆無)
import System.Environment
import Data.List
import Data.List.Split
combinations :: Int -> [a] -> [[a]]
combinations 0 _ = [ [] ]
combinations n xs = [ y:ys | y:xs' <- tails xs, ys <- combinations (n-1) xs']
main = do
argList <- getArgs -- m : 縦マス(短軸) n : 横マス(長軸) k : 宝の数
let m = read (argList !! 0)
n = read (argList !! 1)
k = read (argList !! 2)
q = [0..m*n-1]
matQ = chunksOf n q
matP = transpose matQ --行列を転置して
p = concat matP -- 配列に変換
treasure = combinations k q -- 宝の組み合わせ
ip y = minimum $ map(\x -> elemIndices x p!!0) y -- 宝の、配列pでのindex列を求めて最小値を返す
iq y = minimum $ map(\x -> elemIndices x q!!0) y
idxp = map ip treasure -- 宝の組み合せで実行して
idxq = map iq treasure
p_q = zipWith (-) idxp idxq -- 差をとって大小判別
p1st = length $ filter (<0) p_q -- 短軸方向探索pが先に宝をみつける
q1st = length $ filter (>0) p_q
draw = length $ filter (==0) p_q
putStrLn $ "p1st = " ++ show p1st ++ ", q1st = " ++ show q1st ++ ", draw = " ++ show draw

904:卵の名無しさん
18/10/30 00:28:02.10 Eer9XEMu.net
暴走せずに200万個を数えてくれる
>treasure 5 6 8
p1st = 1827737, q1st = 1825076, draw = 2200112

905:卵の名無しさん
18/10/30 01:00:07.00 Eer9XEMu.net
\hs>treasure 5 6 10
p1st = 7995426, q1st = 8023257, draw = 14026332

906:卵の名無しさん
18/10/30 07:08:46.76 Eer9XEMu.net
>treasure 5 6 9
p1st = 4130886, q1st = 4139080, draw = 6037184

907:卵の名無しさん
18/10/30 07:49:18.11 BVJsV4IZ.net
やはり事務員には難しすぎたようだね
さて 算数の問題です
URLリンク(m.youtube.com)
この動画は part1 が 2009年に投稿され
最終回まであと1話となっています
最終回の登校日はいつになるでしょう?
あらゆる手段を用いて求めましょう

908:卵の名無しさん
18/10/30 08:53:02.81 kXLKssbE.net
>>840
5×6マスで宝の数を10まで増やしていくと、
D:\bin>for %i in (1,2,3,4,5,6,7,8,9,10) do treasure 5 6 %i
D:\bin>treasure 5 6 1
p1st = 14, q1st = 14, draw = 2
D:\bin>treasure 5 6 2
p1st = 203, q1st = 197, draw = 35
D:\bin>treasure 5 6 3
p1st = 1801, q1st = 1727, draw = 532
D:\bin>treasure 5 6 4
p1st = 11418, q1st = 11008, draw = 4979
D:\bin>treasure 5 6 5
p1st = 55469, q1st = 54036, draw = 33001
D:\bin>treasure 5 6 6
p1st = 215265, q1st = 211894, draw = 166616
D:\bin>treasure 5 6 7
p1st = 685784, q1st = 680768, draw = 669248
D:\bin>treasure 5 6 8
p1st = 1827737, q1st = 1825076, draw = 2200112
D:\bin>treasure 5 6 9
p1st = 4130886, q1st = 4139080, draw = 6037184
D:\bin>treasure 5 6 10
p1st = 7995426, q1st = 8023257, draw = 14026332
1:同等
1~8:短軸探索有利
9、10:長軸探索有利
という結果になった。
久しぶりにバッチコマンドを書いた

909:卵の名無しさん
18/10/30 08:53:48.77 kXLKssbE.net
>>844
リンクは踏まないから問題文をかけよ。

910:卵の名無しさん
18/10/30 09:01:44.04 Eer9XEMu.net
>>844
>あらゆる手段を用いて求めましょう
答: お前が答を書け
解答終了!!!
>>840
数学板の賢者がcでプログラムするのを期待していたが、cだと最初にメモリを割り当てなくちゃいけないから難しいんじゃないかな?
動的メモリ確保にしてメモリ不足を回避する必要がでてくると思う。
Rで30個から15個取�


911:闖oす組み合わせをしようとしたら > nrow(combn(30,15)) Error: cannot allocate vector of size 8.7 Gb のメッセージがでて実行不能だった。



912:卵の名無しさん
18/10/30 10:25:52.99 Eer9XEMu.net
30個から15個取り出す組み合わせは155117520通りあるので
シミュレーションで頻度を出して確率を推測してみることにした。
m=5
n=6
mn=m*n
P=as.vector(matrix(1:mn,ncol=n,byrow=T))
Q=1:mn
sim <- function(k=15,all=FALSE){
tre=sample(mn,k)
p=q=numeric(k)
for(i in 1:k){
p[i]=which(tre[i]==P)
q[i]=which(tre[i]==Q)
}
p_order=ifelse(all,max(p),min(p))
q_order=ifelse(all,max(q),min(q))
p_order - q_order
}
choose(30,15)
re15=replicate(1e5,sim(15))
mean(re15<0) < mean(re15>0)
c(p1st_sim=mean(re15<0), q1st_sim=mean(re15>0) ,draw_sim=mean(re15==0))
> c(p1st_sim=mean(re15<0), q1st_sim=mean(re15>0) ,draw_sim=mean(re15==0))
p1st_sim q1st_sim draw_sim
0.16354 0.16515 0.67131

913:卵の名無しさん
18/10/30 12:49:00.84 BVJsV4IZ.net
おらっ 新しい算数の問題だ
自分で回答が出せなければ0点だぞW
URLリンク(www.nicovideo.jp)

914:卵の名無しさん
18/10/30 14:03:59.31 Eer9XEMu.net
treasures <- function(m,n,k){
mn=m*n
Q=1:mn
(mat=matrix(Q,ncol=n,byrow=T))
(P=as.vector(mat))
tre=combn(mn,k)
PQ <- function(x){
p=q=p_q=numeric(k)
for(i in 1:k){
p[i]=which(P==x[i])
q[i]=which(Q==x[i])
p_q[i]=p[i]-q[i]
}
return(p_q)
}
re=apply(tre,2,PQ)
result=matrix(rep(NA,k*3),ncol=3)
colnames(result)=c('p1st','q1st','even')
for(i in 1:k){
result[i,] = c(sum(re[i,]<0),sum(re[i,]>0),sum(re[i,]==0))
}
return(result)
}
treasures(4,5,5)
# URLリンク(tpcg.io)

915:卵の名無しさん
18/10/30 14:06:10.19 Eer9XEMu.net
D:\bin>treasure 5 6 11
p1st = 13346984, q1st = 13395944, draw = 27884372
D:\bin>treasure 5 6 12
p1st = 19312228, q1st = 19372871, draw = 47808126

916:卵の名無しさん
18/10/30 14:08:53.77 Eer9XEMu.net
>>850
この結果は面白いな
全体としては互角なんだが、勝負のルールによって勝者がかわるのがこれで分かった。
> treasures(4,5,5)
p1st q1st even
[1,] 1948 9680 3876
[2,] 5488 10016 0
[3,] 7752 7752 0
[4,] 10016 5488 0
[5,] 9680 1948 3876

917:卵の名無しさん
18/10/30 16:01:45.84 Eer9XEMu.net
>>851
メモリ不足でクラッシュするかと思ったが案外、頑強だな。
エラー処理皆無でコードを書いたのだが。
1億を超える演算をこなしている。
Haskellのコンパイラーは優秀で感心。

D:\bin>treasure 5 6 13
p1st = 24301031, q1st = 24358063, draw = 71100756

918:卵の名無しさん
18/10/30 16:05:37.28 BVJsV4IZ.net
おい、婚活に失敗したド底辺
算数の問題の答えはまだぁ
まぁオマエの頭じゃ無理だろうな

919:卵の名無しさん
18/10/30 16:06:30.58 BVJsV4IZ.net
このスレは事務員が日がな一日妄想を垂れ流し
見物人たちがそれを見てフルボッコにするスレである
事務員 とは?
同一者の別名として、薄汚いジジイ、国試浪人、統計野郎、自称医科歯科、がある
自称医科歯科卒、実際は九州の駅弁国立出身で、卒業後は実家の東京に帰り国試浪人となり23年間経過、家庭教師バイトなどを経て現在は事務員、とされている
本人は、勤務医でたまに開業医の手伝いと内視鏡バイト、専門医なし、と主張しているが、連日連夜の異常な書き込み数の多さからは、勤務医とは考え難く、彼の職業がたとえ何であったとしても、人としてド底辺なことは間違いがない
自ら事務員であると告白したこともある
スレリンク(hosp板:108番)-109
自作自演も頻繁に行なっている
事務仕事の際に手にした他人の給与明細や同窓会費振込票を盗撮し、自分のものとしてアップロードしたこともある、犯罪なんじゃねーの?
統計絶対主義でマウントを取ろうとするが、大学卒業後の人生の大部分においてそれが何の役に立つのかはなはだ疑問である
統計に基づいた重病の治療成績を患者に説明しても、患者の希望する治療は患者の事情によって異なることは一定年数以上の臨床経験があるものなら誰でも知っていることだ
それが理解できない彼は、彼自身が素性を明らかにしているようなものである
コンプ薬屋同様に、私立医への執拗な誹謗中傷を数年余にわたって続けている
裏口批判をしているが、実際にそれが可能な資産家の子弟がいるであろう右派スレには近寄らない、一度書き込んだ形跡があったが指摘したら別人だと言って逃げた
弱いものが多そうなスレしか狙わないのもコンプ薬屋と共通する異常者の特徴である
劣等コンプレックスの塊なんだろうな
自分の主張に対して都合の悪い突込みが入ると、相手を私立医と決めつけて、さてはシリツだな、裏口バカ、というセリフでワンパターンに返すことが多い
国試問題を挙げて簡単だとほざいてますが、本番で通らなければお話になりません
いくらネットでわめいていても、医師国試の本番で通らなければお話になりません
大事なことなので2回言いました

920:卵の名無しさん
18/10/30 16:12:20.65 Eer9XEMu.net
>>854
問題文がないのだから、無理だよ。
>あらゆる手段を用いて求めましょう
答: お前が答を書け
解答終了!!!

921:卵の名無しさん
18/10/30 18:54:55.33 Eer9XEMu.net
treasure_order <- function(m,n,k){
mn=m*n
Q=1:mn
(mat=matrix(Q,ncol=n,byrow=T))
(P=as.vector(mat))
tre=combn(mn,k)
PQk <- function(x){
p=q=p_q=numeric(k)
for(i in 1:k){
p[i]=which(P==x[i])
q[i]=which(Q==x[i])
}
pq=sort(unique(c(p,q)))
np=as.numeric(pq[1:k] %in% p)
nq=as.numeric(pq[1:k] %in% q)
10*np + nq
}
(re=apply(tre,2,PQk))
(result=matrix(NA,nrow=k,ncol=3))
for(i in 1:k){
result[i,]=c(sum(re[i,]==10),sum(re[i,]==1 ),sum(re[i,]==11))
}
colnames(result)=c('P_gets','Q_gets','both_get')
result
}
treasure_order(4,5,5)

922:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch