Doing curve fitting in R for a power series - r
I have trying to estimate the annual of an investment scheme which applied dollar cost averaging, which the increment of value is listed as below (sorry that MathJax looks like greek to me, so I didn't use it):
x: regular contribution, which is 1500 in my case
y: rate of return PLUS 100% (e.g 1.07 for a 7% return), which is the parameters that I want to estimate.
Time 1: xy
Time 2: (x + xy)*y
Time 3: (x + (x + xy)*y)*y
Time 4: (x + (x + (x + xy)*y)*y)*y
Time 5: (x + (x + (x + (x + xy)*y)*y)*y)*y
Time 6: (x + (x + (x + (x + (x + xy)*y)*y)*y)*y)*y
And the list goes on.
After simplifying the equation, if I calculate it correctly, it should be a power series:
xy(1 + y + y^2 + y^3 + y^4 + y^5 +y^6)
I know that equation above can be used for the nls function in R, as suggested in http://www.walkingrandomly.com/?p=5254. But the problem is, the investment scheme has been traded for more than 6 times, the number of trades is variable and I prefer not to fix the number of trades in the formula.
I wonder if R can create a formula with variable length of the power series, something like a function?
update 01
Thanks for the comment #Roland, I have dput my dataframe as below:
structure(list(date = 1:62, value = c(1500, 3008.1048, 4279.09223337264,
5701.16001583254, 7545.25391699441, 8883.87795645887, 11192.7249445628,
13043.5267669473, 14396.3707754063, 16677.2027610312, 18474.8268536672,
20225.6882177597, 21889.6372952495, 24090.0451286292, 25305.8719822623,
26293.5164474925, 27470.5608573055, 26851.4637959011, 25610.4708389126,
29781.3033136099, 30244.449772352, 31757.1977515, 35216.3065708333,
38661.857424377, 40153.0021899712, 41453.1839013205, 39626.0241467687,
42464.6515262833, 44415.7606695956, 46456.2932413184, 49539.1291983018,
51223.0944673951, 53534.0828137635, 56511.2727118443, 60750.8112270199,
62420.4165280642, 64561.1738159384, 67269.7609015725, 69582.2433935286,
68461.4426685366, 72790.7668201147, 73029.1128824367, 77963.2040906503,
81782.8304828104, 84781.7088147301, 87010.8577769314, 85461.5060309602,
90165.7453255817, 91340.1347579196, 92918.1083054977, 96713.3387975151,
99841.2477244806, 101538.099862003, 104946.468993318, 103233.508326534,
106416.67466519, 109991.955526668, 110800.989092493, 112258.758666778,
118567.887527905, 120872.966926589, 127711.586247323), expected_value = c(1511.96121064336,
3035.97901230344, 4572.1495459301, 6120.56971911465, 7681.33721220313,
9254.55048445835, 10840.3087802712, 12438.7121354211, 14049.861383387,
15673.8581617081, 17310.8049183956, 18960.8049183956, 20623.9622501033,
22300.3818319294, 23990.1694189188, 25693.4316094218, 27410.2758518191,
29140.8104512998, 30885.1445766939, 32643.3882673588, 34415.6524401213,
36202.0488962746, 38002.6903286308, 39817.6903286308, 41647.1633935093,
43491.224933518, 45349.9912792063, 47223.5796887596, 49112.1083553966,
51015.6964148254, 52934.4639527589, 54868.5320124903, 56818.0226025291,
58783.0587042976, 60763.7642798896, 62760.2642798896, 64772.6846512559,
66801.1523452654, 68845.7953255225, 70906.7425760312, 72984.1241093319,
75078.0709747036, 77188.7152664305, 79316.190132135, 81460.6297811776,
83622.169493123, 85800.9456262742, 87997.0956262742, 90210.7580347771,
92442.0724981876, 94691.1797764704, 96958.2217520299, 99243.3414386608,
101546.68299057, 103868.391711469, 106208.614063744, 108567.497677691,
110945.191360831, 113341.845107297, 115757.610107297, 118192.63875665,
120647.084666402)), .Names = c("date", "value", "expected_value"
), row.names = c("63", "62", "61", "60", "59", "58", "57", "56",
"55", "54", "53", "52", "51", "50", "49", "48", "47", "46", "45",
"44", "43", "42", "41", "40", "39", "38", "37", "36", "35", "34",
"33", "32", "31", "30", "29", "28", "27", "26", "25", "24", "23",
"22", "21", "20", "19", "18", "17", "16", "15", "14", "13", "12",
"11", "10", "9", "8", "7", "6", "5", "4", "510", "410"), class = c("tbl_df",
"tbl", "data.frame"))
Related
Group periodic data in dataframe
I have a dataset comprised of periodic data. I want to group the data by period. The full dataset is provided: LINK Data for one period of the dataset is provided and ploted: > dput(DATA[1:122,c(2,9)]) structure(list(Actuator.Force = c(-4853.5854, -4566.9771, -4198.7612, -3774.5527, -3317.6958, -2847.5229, -2364.7585, -1880.9485, -1405.4272, -930.289, -467.04822, -18.867363, 421.17499, 838.86719, 1239.9121, 1626.0669, 1990.6389, 2334.0852, 2655.344, 2962.0227, 3243.7817, 3506.2249, 3744.2622, 3959.8271, 4156.7061, 4324.9048, 4469.229, 4591.6689, 4687.4194, 4764.0801, 4814.6167, 4840.313, 4846.0181, 4826.3135, 4777.6553, 4696.0791, 4583.854, 4442.457, 4272.5254, 4076.7224, 3851.1211, 3603.1853, 3330.7456, 3038.3157, 2724.115, 2386.5476, 2032.5809, 1660.0547, 1268.0084, 859.16675, 432.4075, -14.131592, -479.29309, -955.67108, -1444.614, -1937.2562, -2437.0085, -2941.8914, -3450.9009, -3959.9597, -4468.9795, -4981.2549, -5492.6997, -6002.334, -6510.5425, -7016.2432, -7517.8286, -8013.1348, -8500.4199, -8974.8867, -9439.5479, -9890.5938, -10326.367, -10744.421, -11147.754, -11534.83, -11902.651, -12248.997, -12577.919, -12885.458, -13172.309, -13441.554, -13691.502, -13922.634, -14127.116, -14305.272, -14458.267, -14582.934, -14685.274, -14758.539, -14806.058, -14830.719, -14836.625, -14822.204, -14773.916, -14700.484, -14597.968, -14469.834, -14312.099, -14126.422, -13915.136, -13676.505, -13412.388, -13120.703, -12807.961, -12473.883, -12115.751, -11740.082, -11342.633, -10929.945, -10502.158, -10062.869, -9611.8271, -9146.6006, -8673.3545, -8191.7417, -7700.769, -7200.9346, -6695.8809, -6185.2378, -5670.8711, -5154.9995), Rotation = c(-0.005985651, -0.00565783616666667, -0.00522075016666667, -0.0046743925, -0.00406732866666667, -0.00343598223333333, -0.00286534205, -0.00219757165, -0.00156622503333333, -0.000934878566666667, -0.000267108158333333, 0.000303531998333333, 0.00084988955, 0.0013962471, 0.00193046351666667, 0.00242825596666667, 0.00288962463333333, 0.0033995583, 0.0038366445, 0.00424944783333333, 0.004637969, 0.0050507725, 0.005378587, 0.00565783616666667, 0.00594922716666667, 0.00620419383333333, 0.006410596, 0.0065684325, 0.00670198666666667, 0.00683554116666667, 0.0069205295, 0.00699337683333333, 0.0070055185, 0.006993377, 0.00696909483333333, 0.00688410516666667, 0.006774834, 0.00659271483333333, 0.006386313, 0.00613134633333333, 0.0058399555, 0.0055364235, 0.00518432633333333, 0.00483222916666667, 0.0044072845, 0.00403090483333333, 0.00353311216666667, 0.0029988961, 0.00251324506666667, 0.0020275938, 0.00144481233333333, 0.00086203085, 0.000303531998333333, -0.000315673273333333, -0.000983443666666667, -0.00162693151666667, -0.00233112578333333, -0.0029988961, -0.00366666666666667, -0.00433443683333333, -0.00496578316666667, -0.00563355366666667, -0.0062770415, -0.0069690945, -0.0076611475, -0.00836534183333333, -0.00902097083333333, -0.00968874116666667, -0.0103443703333333, -0.0109514346666667, -0.011594922, -0.012177704, -0.0127969093333333, -0.0133918318333333, -0.0139746131666667, -0.0145209698333333, -0.014982339, -0.0154437081666667, -0.0159050765, -0.0163178798333333, -0.0167185421666667, -0.0170706398333333, -0.0174105943333333, -0.0177505506666667, -0.018017659, -0.0182483433333333, -0.0184547455, -0.0186490056666667, -0.0187704183333333, -0.01887969, -0.0189525386666667, -0.018988962, -0.0190011033333333, -0.018988962, -0.0189768206666667, -0.0189282553333333, -0.0188189838333333, -0.018673289, -0.018442604, -0.0182240605, -0.017993377, -0.0176534206666667, -0.0173256068333333, -0.0169492263333333, -0.0165485635, -0.0161357608333333, -0.0156622516666667, -0.0152373058333333, -0.0147152313333333, -0.0141931568333333, -0.0136103748333333, -0.0130275935, -0.0123962468333333, -0.0118013235, -0.0112064015, -0.0105507718333333, -0.00993156683333333, -0.0092637965, -0.008620309, -0.00791611466666667, -0.00719977883333333, -0.0065441495)), row.names = c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "117", "118", "119", "120", "121", "122"), class = "data.frame") The next row of the data starts a new period and so on. I want to group the rows by the periods that exist in the data. Although the code provided in this example can find the periods if fully completed data is provided (it worked for the first three periods), when applied to the entire dataset of periodic data, it resulted in NaNs. ssp <- spectrum(DATA$Rotation, plot = FALSE, method = "ar", n.freq = 1e6) period <- 1 / with(ssp, freq[spec == max(spec)]) DATA$Loop <- (seq_len(nrow(DATA)) %/% period) + 1
Here's an approach where I define a region where both the Rotation is increasing and Rotation is at least as high as the starting value. Then I count how many times we enter that region and that's the period number. library(dplyr) Rot_start = DATA$Rotation[1] rbind(DATA, DATA) %>% # to demonstrate two cycles mutate(Rot_pos = Rotation > lag(Rotation, default = -1), Rot_rightside = Rotation >= Rot_start, Rot_region = Rot_pos & Rot_rightside, new_period = Rot_region & !(lag(Rot_region, default = FALSE)), period = cumsum(new_period)) # more succinct, same workings # mutate(Rot_region = Rotation > lag(Rotation, default = -1) & Rotation >= Rot_start, # period = cumsum(Rot_region & !(lag(Rot_region, default = FALSE))))
scale_x_continuous : Discrete value supplied to continuous scale
I'm a beginner in R. I get this error Error: Discrete value supplied to continuous scale when I try to use scale_x_continuous(breaks=1:10) The plot I get is the following one. As you can see, the axis needs to be reduced... I get my data from a csv file dput(head(Data, 20)) structure(list(Pmanche = structure(1:20, .Label = c("0", "0,1", "0,2", "0,3", "0,4", "0,5", "0,6", "0,7", "0,8", "0,9", "1", "1,1", "1,2", "1,3", "1,4", "1,5", "1,6", "1,7", "1,8", "1,9", "10", "10,1", "10,2", "10,3", "10,4", "10,5", "10,6", "10,7", "10,8", "10,9", "100", "11", "11,1", "11,2", "11,3", "11,4", "11,5", "11,6", "11,7", "11,8", "11,9", "12", "12,1", "12,2", "12,3", "12,4", "12,5", "12,6", "12,7", "12,8", "12,9", "13", "13,1", "13,2", "13,3", "13,4", "13,5", "13,6", "13,7", "13,8", "13,9", "14", "14,1", "14,2", "14,3", "14,4", "14,5", "14,6", "14,7", "14,8", "14,9", "15", "15,1", "15,2", "15,3", "15,4", "15,5", "15,6", "15,7", "15,8", "15,9", "16", "16,1", "16,2", "16,3", "16,4", "16,5", "16,6", "16,7", "16,8", "16,9", "17", "17,1", "17,2", "17,3", "17,4", "17,5", "17,6", "17,7", "17,8", "17,9", "18", "18,1", "18,2", "18,3", "18,4", "18,5", "18,6", "18,7", "18,8", "18,9", "19", "19,1", "19,2", "19,3", "19,4", "19,5", "19,6", "19,7", "19,8", "19,9", "2", "2,1", "2,2", "2,3", "2,4", "2,5", "2,6", "2,7", "2,8", "2,9", "20", "20,1", "20,2", "20,3", "20,4", "20,5", "20,6", "20,7", "20,8", "20,9", "21", "21,1", "21,2", "21,3", "21,4", "21,5", "21,6", "21,7", "21,8", "21,9", "22", "22,1", "22,2", "22,3", "22,4", "22,5", "22,6", "22,7", "22,8", "22,9", "23", "23,1", "23,2", "23,3", "23,4", "23,5", "23,6", "23,7", "23,8", "23,9", "24", "24,1", "24,2", "24,3", "24,4", "24,5", "24,6", "24,7", "24,8", "24,9", "25", "25,1", "25,2", "25,3", "25,4", "25,5", "25,6", "25,7", "25,8", "25,9", "26", "26,1", "26,2", "26,3", "26,4", "26,5", "26,6", "26,7", "26,8", "26,9", "27", "27,1", "27,2", "27,3", "27,4", "27,5", "27,6", "27,7", "27,8", "27,9", "28", "28,1", "28,2", "28,3", "28,4", "28,5", "28,6", "28,7", "28,8", "28,9", "29", "29,1", "29,2", "29,3", "29,4", "29,5", "29,6", "29,7", "29,8", "29,9", "3", "3,1", "3,2", "3,3", "3,4", "3,5", "3,6", "3,7", "3,8", "3,9", "30", "30,1", "30,2", "30,3", "30,4", "30,5", "30,6", "30,7", "30,8", "30,9", "31", "31,1", "31,2", "31,3", "31,4", "31,5", "31,6", "31,7", "31,8", "31,9", "32", "32,1", "32,2", "32,3", "32,4", "32,5", "32,6", "32,7", "32,8", "32,9", "33", "33,1", "33,2", "33,3", "33,4", "33,5", "33,6", "33,7", "33,8", "33,9", "34", "34,1", "34,2", "34,3", "34,4", "34,5", "34,6", "34,7", "34,8", "34,9", "35", "35,1", "35,2", "35,3", "35,4", "35,5", "35,6", "35,7", "35,8", "35,9", "36", "36,1", "36,2", "36,3", "36,4", "36,5", "36,6", "36,7", "36,8", "36,9", "37", "37,1", "37,2", "37,3", "37,4", "37,5", "37,6", "37,7", "37,8", "37,9", "38", "38,1", "38,2", "38,3", "38,4", "38,5", "38,6", "38,7", "38,8", "38,9", "39", "39,1", "39,2", "39,3", "39,4", "39,5", "39,6", "39,7", "39,8", "39,9", "4", "4,1", "4,2", "4,3", "4,4", "4,5", "4,6", "4,7", "4,8", "4,9", "40", "40,1", "40,2", "40,3", "40,4", "40,5", "40,6", "40,7", "40,8", "40,9", "41", "41,1", "41,2", "41,3", "41,4", "41,5", "41,6", "41,7", "41,8", "41,9", "42", "42,1", "42,2", "42,3", "42,4", "42,5", "42,6", "42,7", "42,8", "42,9", "43", "43,1", "43,2", "43,3", "43,4", "43,5", "43,6", "43,7", "43,8", "43,9", "44", "44,1", "44,2", "44,3", "44,4", "44,5", "44,6", "44,7", "44,8", "44,9", "45", "45,1", "45,2", "45,3", "45,4", "45,5", "45,6", "45,7", "45,8", "45,9", "46", "46,1", "46,2", "46,3", "46,4", "46,5", "46,6", "46,7", "46,8", "46,9", "47", "47,1", "47,2", "47,3", "47,4", "47,5", "47,6", "47,7", "47,8", "47,9", "48", "48,1", "48,2", "48,3", "48,4", "48,5", "48,6", "48,7", "48,8", "48,9", "49", "49,1", "49,2", "49,3", "49,4", "49,5", "49,6", "49,7", "49,8", "49,9", "5", "5,1", "5,2", "5,3", "5,4", "5,5", "5,6", "5,7", "5,8", "5,9", "50", "50,1", "50,2", "50,3", "50,4", "50,5", "50,6", "50,7", "50,8", "50,9", "51", "51,1", "51,2", "51,3", "51,4", "51,5", "51,6", "51,7", "51,8", "51,9", "52", "52,1", "52,2", "52,3", "52,4", "52,5", "52,6", "52,7", "52,8", "52,9", "53", "53,1", "53,2", "53,3", "53,4", "53,5", "53,6", "53,7", "53,8", "53,9", "54", "54,1", "54,2", "54,3", "54,4", "54,5", "54,6", "54,7", "54,8", "54,9", "55", "55,1", "55,2", "55,3", "55,4", "55,5", "55,6", "55,7", "55,8", "55,9", "56", "56,1", "56,2", "56,3", "56,4", "56,5", "56,6", "56,7", "56,8", "56,9", "57", "57,1", "57,2", "57,3", "57,4", "57,5", "57,6", "57,7", "57,8", "57,9", "58", "58,1", "58,2", "58,3", "58,4", "58,5", "58,6", "58,7", "58,8", "58,9", "59", "59,1", "59,2", "59,3", "59,4", "59,5", "59,6", "59,7", "59,8", "59,9", "6", "6,1", "6,2", "6,3", "6,4", "6,5", "6,6", "6,7", "6,8", "6,9", "60", "60,1", "60,2", "60,3", "60,4", "60,5", "60,6", "60,7", "60,8", "60,9", "61", "61,1", "61,2", "61,3", "61,4", "61,5", "61,6", "61,7", "61,8", "61,9", "62", "62,1", "62,2", "62,3", "62,4", "62,5", "62,6", "62,7", "62,8", "62,9", "63", "63,1", "63,2", "63,3", "63,4", "63,5", "63,6", "63,7", "63,8", "63,9", "64", "64,1", "64,2", "64,3", "64,4", "64,5", "64,6", "64,7", "64,8", "64,9", "65", "65,1", "65,2", "65,3", "65,4", "65,5", "65,6", "65,7", "65,8", "65,9", "66", "66,1", "66,2", "66,3", "66,4", "66,5", "66,6", "66,7", "66,8", "66,9", "67", "67,1", "67,2", "67,3", "67,4", "67,5", "67,6", "67,7", "67,8", "67,9", "68", "68,1", "68,2", "68,3", "68,4", "68,5", "68,6", "68,7", "68,8", "68,9", "69", "69,1", "69,2", "69,3", "69,4", "69,5", "69,6", "69,7", "69,8", "69,9", "7", "7,1", "7,2", "7,3", "7,4", "7,5", "7,6", "7,7", "7,8", "7,9", "70", "70,1", "70,2", "70,3", "70,4", "70,5", "70,6", "70,7", "70,8", "70,9", "71", "71,1", "71,2", "71,3", "71,4", "71,5", "71,6", "71,7", "71,8", "71,9", "72", "72,1", "72,2", "72,3", "72,4", "72,5", "72,6", "72,7", "72,8", "72,9", "73", "73,1", "73,2", "73,3", "73,4", "73,5", "73,6", "73,7", "73,8", "73,9", "74", "74,1", "74,2", "74,3", "74,4", "74,5", "74,6", "74,7", "74,8", "74,9", "75", "75,1", "75,2", "75,3", "75,4", "75,5", "75,6", "75,7", "75,8", "75,9", "76", "76,1", "76,2", "76,3", "76,4", "76,5", "76,6", "76,7", "76,8", "76,9", "77", "77,1", "77,2", "77,3", "77,4", "77,5", "77,6", "77,7", "77,8", "77,9", "78", "78,1", "78,2", "78,3", "78,4", "78,5", "78,6", "78,7", "78,8", "78,9", "79", "79,1", "79,2", "79,3", "79,4", "79,5", "79,6", "79,7", "79,8", "79,9", "8", "8,1", "8,2", "8,3", "8,4", "8,5", "8,6", "8,7", "8,8", "8,9", "80", "80,1", "80,2", "80,3", "80,4", "80,5", "80,6", "80,7", "80,8", "80,9", "81", "81,1", "81,2", "81,3", "81,4", "81,5", "81,6", "81,7", "81,8", "81,9", "82", "82,1", "82,2", "82,3", "82,4", "82,5", "82,6", "82,7", "82,8", "82,9", "83", "83,1", "83,2", "83,3", "83,4", "83,5", "83,6", "83,7", "83,8", "83,9", "84", "84,1", "84,2", "84,3", "84,4", "84,5", "84,6", "84,7", "84,8", "84,9", "85", "85,1", "85,2", "85,3", "85,4", "85,5", "85,6", "85,7", "85,8", "85,9", "86", "86,1", "86,2", "86,3", "86,4", "86,5", "86,6", "86,7", "86,8", "86,9", "87", "87,1", "87,2", "87,3", "87,4", "87,5", "87,6", "87,7", "87,8", "87,9", "88", "88,1", "88,2", "88,3", "88,4", "88,5", "88,6", "88,7", "88,8", "88,9", "89", "89,1", "89,2", "89,3", "89,4", "89,5", "89,6", "89,7", "89,8", "89,9", "9", "9,1", "9,2", "9,3", "9,4", "9,5", "9,6", "9,7", "9,8", "9,9", "90", "90,1", "90,2", "90,3", "90,4", "90,5", "90,6", "90,7", "90,8", "90,9", "91", "91,1", "91,2", "91,3", "91,4", "91,5", "91,6", "91,7", "91,8", "91,9", "92", "92,1", "92,2", "92,3", "92,4", "92,5", "92,6", "92,7", "92,8", "92,9", "93", "93,1", "93,2", "93,3", "93,4", "93,5", "93,6", "93,7", "93,8", "93,9", "94", "94,1", "94,2", "94,3", "94,4", "94,5", "94,6", "94,7", "94,8", "94,9", "95", "95,1", "95,2", "95,3", "95,4", "95,5", "95,6", "95,7", "95,8", "95,9", "96", "96,1", "96,2", "96,3", "96,4", "96,5", "96,6", "96,7", "96,8", "96,9", "97", "97,1", "97,2", "97,3", "97,4", "97,5", "97,6", "97,7", "97,8", "97,9", "98", "98,1", "98,2", "98,3", "98,4", "98,5", "98,6", "98,7", "98,8", "98,9", "99", "99,1", "99,2", "99,3", "99,4", "99,5", "99,6", "99,7", "99,8", "99,9"), class = "factor"), Pcsge = structure(1:20, .Label = c("0", "0,1", "0,2", "0,3", "0,4", "0,5", "0,6", "0,7", "0,8", "0,9", "1", "1,1", "1,2", "1,3", "1,4", "1,5", "1,6", "1,7", "1,8", "1,9", "10", "10,1", "10,2", "10,3", "10,4", "10,5", "10,6", "10,7", "10,8", "10,9", "100", "11", "11,1", "11,2", "11,3", "11,4", "11,5", "11,6", "11,7", "11,8", "11,9", "12", "12,1", "12,2", "12,3", "12,4", "12,5", "12,6", "12,7", "12,8", "12,9", "13", "13,1", "13,2", "13,3", "13,4", "13,5", "13,6", "13,7", "13,8", "13,9", "14", "14,1", "14,2", "14,3", "14,4", "14,5", "14,6", "14,7", "14,8", "14,9", "15", "15,1", "15,2", "15,3", "15,4", "15,5", "15,6", "15,7", "15,8", "15,9", "16", "16,1", "16,2", "16,3", "16,4", "16,5", "16,6", "16,7", "16,8", "16,9", "17", "17,1", "17,2", "17,3", "17,4", "17,5", "17,6", "17,7", "17,8", "17,9", "18", "18,1", "18,2", "18,3", "18,4", "18,5", "18,6", "18,7", "18,8", "18,9", "19", "19,1", "19,2", "19,3", "19,4", "19,5", "19,6", "19,7", "19,8", "19,9", "2", "2,1", "2,2", "2,3", "2,4", "2,5", "2,6", "2,7", "2,8", "2,9", "20", "20,1", "20,2", "20,3", "20,4", "20,5", "20,6", "20,7", "20,8", "20,9", "21", "21,1", "21,2", "21,3", "21,4", "21,5", "21,6", "21,7", "21,8", "21,9", "22", "22,1", "22,2", "22,3", "22,4", "22,5", "22,6", "22,7", "22,8", "22,9", "23", "23,1", "23,2", "23,3", "23,4", "23,5", "23,6", "23,7", "23,8", "23,9", "24", "24,1", "24,2", "24,3", "24,4", "24,5", "24,6", "24,7", "24,8", "24,9", "25", "25,1", "25,2", "25,3", "25,4", "25,5", "25,6", "25,7", "25,8", "25,9", "26", "26,1", "26,2", "26,3", "26,4", "26,5", "26,6", "26,7", "26,8", "26,9", "27", "27,1", "27,2", "27,3", "27,4", "27,5", "27,6", "27,7", "27,8", "27,9", "28", "28,1", "28,2", "28,3", "28,4", "28,5", "28,6", "28,7", "28,8", "28,9", "29", "29,1", "29,2", "29,3", "29,4", "29,5", "29,6", "29,7", "29,8", "29,9", "3", "3,1", "3,2", "3,3", "3,4", "3,5", "3,6", "3,7", "3,8", "3,9", "30", "30,1", "30,2", "30,3", "30,4", "30,5", "30,6", "30,7", "30,8", "30,9", "31", "31,1", "31,2", "31,3", "31,4", "31,5", "31,6", "31,7", "31,8", "31,9", "32", "32,1", "32,2", "32,3", "32,4", "32,5", "32,6", "32,7", "32,8", "32,9", "33", "33,1", "33,2", "33,3", "33,4", "33,5", "33,6", "33,7", "33,8", "33,9", "34", "34,1", "34,2", "34,3", "34,4", "34,5", "34,6", "34,7", "34,8", "34,9", "35", "35,1", "35,2", "35,3", "35,4", "35,5", "35,6", "35,7", "35,8", "35,9", "36", "36,1", "36,2", "36,3", "36,4", "36,5", "36,6", "36,7", "36,8", "36,9", "37", "37,1", "37,2", "37,3", "37,4", "37,5", "37,6", "37,7", "37,8", "37,9", "38", "38,1", "38,2", "38,3", "38,4", "38,5", "38,6", "38,7", "38,8", "38,9", "39", "39,1", "39,2", "39,3", "39,4", "39,5", "39,6", "39,7", "39,8", "39,9", "4", "4,1", "4,2", "4,3", "4,4", "4,5", "4,6", "4,7", "4,8", "4,9", "40", "40,1", "40,2", "40,3", "40,4", "40,5", "40,6", "40,7", "40,8", "40,9", "41", "41,1", "41,2", "41,3", "41,4", "41,5", "41,6", "41,7", "41,8", "41,9", "42", "42,1", "42,2", "42,3", "42,4", "42,5", "42,6", "42,7", "42,8", "42,9", "43", "43,1", "43,2", "43,3", "43,4", "43,5", "43,6", "43,7", "43,8", "43,9", "44", "44,1", "44,2", "44,3", "44,4", "44,5", "44,6", "44,7", "44,8", "44,9", "45", "45,1", "45,2", "45,3", "45,4", "45,5", "45,6", "45,7", "45,8", "45,9", "46", "46,1", "46,2", "46,3", "46,4", "46,5", "46,6", "46,7", "46,8", "46,9", "47", "47,1", "47,2", "47,3", "47,4", "47,5", "47,6", "47,7", "47,8", "47,9", "48", "48,1", "48,2", "48,3", "48,4", "48,5", "48,6", "48,7", "48,8", "48,9", "49", "49,1", "49,2", "49,3", "49,4", "49,5", "49,6", "49,7", "49,8", "49,9", "5", "5,1", "5,2", "5,3", "5,4", "5,5", "5,6", "5,7", "5,8", "5,9", "50", "50,1", "50,2", "50,3", "50,4", "50,5", "50,6", "50,7", "50,8", "50,9", "51", "51,1", "51,2", "51,3", "51,4", "51,5", "51,6", "51,7", "51,8", "51,9", "52", "52,1", "52,2", "52,3", "52,4", "52,5", "52,6", "52,7", "52,8", "52,9", "53", "53,1", "53,2", "53,3", "53,4", "53,5", "53,6", "53,7", "53,8", "53,9", "54", "54,1", "54,2", "54,3", "54,4", "54,5", "54,6", "54,7", "54,8", "54,9", "55", "55,1", "55,2", "55,3", "55,4", "55,5", "55,6", "55,7", "55,8", "55,9", "56", "56,1", "56,2", "56,3", "56,4", "56,5", "56,6", "56,7", "56,8", "56,9", "57", "57,1", "57,2", "57,3", "57,4", "57,5", "57,6", "57,7", "57,8", "57,9", "58", "58,1", "58,2", "58,3", "58,4", "58,5", "58,6", "58,7", "58,8", "58,9", "59", "59,1", "59,2", "59,3", "59,4", "59,5", "59,6", "59,7", "59,8", "59,9", "6", "6,1", "6,2", "6,3", "6,4", "6,5", "6,6", "6,7", "6,8", "6,9", "60", "60,1", "60,2", "60,3", "60,4", "60,5", "60,6", "60,7", "60,8", "60,9", "61", "61,1", "61,2", "61,3", "61,4", "61,5", "61,6", "61,7", "61,8", "61,9", "62", "62,1", "62,2", "62,3", "62,4", "62,5", "62,6", "62,7", "62,8", "62,9", "63", "63,1", "63,2", "63,3", "63,4", "63,5", "63,6", "63,7", "63,8", "63,9", "64", "64,1", "64,2", "64,3", "64,4", "64,5", "64,6", "64,7", "64,8", "64,9", "65", "65,1", "65,2", "65,3", "65,4", "65,5", "65,6", "65,7", "65,8", "65,9", "66", "66,1", "66,2", "66,3", "66,4", "66,5", "66,6", "66,7", "66,8", "66,9", "67", "67,1", "67,2", "67,3", "67,4", "67,5", "67,6", "67,7", "67,8", "67,9", "68", "68,1", "68,2", "68,3", "68,4", "68,5", "68,6", "68,7", "68,8", "68,9", "69", "69,1", "69,2", "69,3", "69,4", "69,5", "69,6", "69,7", "69,8", "69,9", "7", "7,1", "7,2", "7,3", "7,4", "7,5", "7,6", "7,7", "7,8", "7,9", "70", "70,1", "70,2", "70,3", "70,4", "70,5", "70,6", "70,7", "70,8", "70,9", "71", "71,1", "71,2", "71,3", "71,4", "71,5", "71,6", "71,7", "71,8", "71,9", "72", "72,1", "72,2", "72,3", "72,4", "72,5", "72,6", "72,7", "72,8", "72,9", "73", "73,1", "73,2", "73,3", "73,4", "73,5", "73,6", "73,7", "73,8", "73,9", "74", "74,1", "74,2", "74,3", "74,4", "74,5", "74,6", "74,7", "74,8", "74,9", "75", "75,1", "75,2", "75,3", "75,4", "75,5", "75,6", "75,7", "75,8", "75,9", "76", "76,1", "76,2", "76,3", "76,4", "76,5", "76,6", "76,7", "76,8", "76,9", "77", "77,1", "77,2", "77,3", "77,4", "77,5", "77,6", "77,7", "77,8", "77,9", "78", "78,1", "78,2", "78,3", "78,4", "78,5", "78,6", "78,7", "78,8", "78,9", "79", "79,1", "79,2", "79,3", "79,4", "79,5", "79,6", "79,7", "79,8", "79,9", "8", "8,1", "8,2", "8,3", "8,4", "8,5", "8,6", "8,7", "8,8", "8,9", "80", "80,1", "80,2", "80,3", "80,4", "80,5", "80,6", "80,7", "80,8", "80,9", "81", "81,1", "81,2", "81,3", "81,4", "81,5", "81,6", "81,7", "81,8", "81,9", "82", "82,1", "82,2", "82,3", "82,4", "82,5", "82,6", "82,7", "82,8", "82,9", "83", "83,1", "83,2", "83,3", "83,4", "83,5", "83,6", "83,7", "83,8", "83,9", "84", "84,1", "84,2", "84,3", "84,4", "84,5", "84,6", "84,7", "84,8", "84,9", "85", "85,1", "85,2", "85,3", "85,4", "85,5", "85,6", "85,7", "85,8", "85,9", "86", "86,1", "86,2", "86,3", "86,4", "86,5", "86,6", "86,7", "86,8", "86,9", "87", "87,1", "87,2", "87,3", "87,4", "87,5", "87,6", "87,7", "87,8", "87,9", "88", "88,1", "88,2", "88,3", "88,4", "88,5", "88,6", "88,7", "88,8", "88,9", "89", "89,1", "89,2", "89,3", "89,4", "89,5", "89,6", "89,7", "89,8", "89,9", "9", "9,1", "9,2", "9,3", "9,4", "9,5", "9,6", "9,7", "9,8", "9,9", "90", "90,1", "90,2", "90,3", "90,4", "90,5", "90,6", "90,7", "90,8", "90,9", "91", "91,1", "91,2", "91,3", "91,4", "91,5", "91,6", "91,7", "91,8", "91,9", "92", "92,1", "92,2", "92,3", "92,4", "92,5", "92,6", "92,7", "92,8", "92,9", "93", "93,1", "93,2", "93,3", "93,4", "93,5", "93,6", "93,7", "93,8", "93,9", "94", "94,1", "94,2", "94,3", "94,4", "94,5", "94,6", "94,7", "94,8", "94,9", "95", "95,1", "95,2", "95,3", "95,4", "95,5", "95,6", "95,7", "95,8", "95,9", "96", "96,1", "96,2", "96,3", "96,4", "96,5", "96,6", "96,7", "96,8", "96,9", "97", "97,1", "97,2", "97,3", "97,4", "97,5", "97,6", "97,7", "97,8", "97,9", "98", "98,1", "98,2", "98,3", "98,4", "98,5", "98,6", "98,7", "98,8", "98,9", "99", "99,1", "99,2", "99,3", "99,4", "99,5", "99,6", "99,7", "99,8", "99,9"), class = "factor")), row.names = c(NA, 20L), class = "data.frame") At first, I though it was a problem with class of variables (numeric, factor...) but even when I convert to numeric it doesnt work... Data$Pmanche <- levels(Data$Pmanche)[Data$Pmanche] Data$Pcsge <- levels(Data$Pcsge)[Data$Pcsge] Thanks for your time! Here is my code: ## definition workdirectory setwd(dir="C:/Users/F596028/Documents/nouveau dossier/Optimisation") ############################## # Packages # ############################## # Graphics #install.packages("ggplot2") library(ggplot2) ############################## # ouverture du fichier Excel # ############################## ## Fichiers extension .csv du repertoir files <- list.files(pattern = "\\.csv$") files <- sort(files) ## Enregistrement des titres headers <- read.csv("Classeur1.csv", header = F, nrows = 1, as.is = T, sep=";") ## Enregistrement des données Sub1 <- read.csv(files, skip=1, header=F, sep=";") colnames(Sub1)=headers Pmanche<-Sub1[,c(3)] Pcsge<-Sub1[,c(4)] Data <- data.frame(Pmanche,Pcsge) ############################## # Plots # ############################## #Data$Pmanche <- levels(Data$Pmanche)[Data$Pmanche] #Data$Pcsge <- levels(Data$Pcsge)[Data$Pcsge] p<- ggplot(Data, aes(Pmanche,Pcsge)) p + geom_point() + scale_x_continuous(breaks=1:10)
Ok, I solved it. The problem was the data source. I learned we need to be careful when taking data from excel... Decimals must be indicated with "." and not "," Thanks
Change color of a specific coordinate
I want to change the color of a certain coordinate, actually is the same coordinate which has the annotation. Any ideas? p1 <- ggplot(HiBAP1517, aes(BPM, Yld)) + geom_point(shape=16) + geom_smooth(method=lm, se = F) + theme(axis.title.x = element_text(color="black", size=14, face="bold"), axis.title.y = element_text(color="black", size=14, face="bold")) p2 <- p1 + annotate(geom="text", x=1879, y=892.02, label="Rialto", color="darkorange", size = 5, hjust=1, vjust=1.3, fontface =2) p3 <- p2 + annotate(geom="text", x=1654.75, y=834.2375, label="Savannah", color="firebrick1", size = 5, hjust=1, vjust=1, fontface =2) pfinal <- p3 + labs(x = expression("AGDM"[PM]^{}*(gm^{-2})), y = expression("GY"*(gm^{-2}))) This is my output, but I would like to change the color (instead of black) of those 2 coordinates: Data sample: Genotype,BPM,Yld 1,1767.793447,747.0708034 2,2074.815941,775.8880562 3,2197.933995,854.3810136 5,2085.627286,845.9306447 6,1908.97774,841.4318038 7,2120.24666,875.5534429 8,2226.617509,764.3849451 9,2035.68002,810.2658242 10,2153.727,861.7024631 11,1993.568134,782.5763292 12,2013.199982,822.6565187 13,2078.275912,837.2819632 14,2042.456487,802.6913977 16,1840.058841,767.6509829 17,2013.338146,801.2064103 18,2087.151352,822.1910199 19,1988.038384,859.573342 20,2083.092896,887.2783898 21,2072.905795,861.3044422 23,1849.744525,723.5014595 24,1785.04038,747.4940519 25,2078.402869,835.7669124 26,1698.390774,681.256732 27,2065.842661,852.3073467 28,2020.285009,811.6889063 29,2039.137248,821.7951099 30,1855.665106,781.0350726 31,1792.32475,744.9001931 32,1992.616447,860.7054072 33,2025.79755,834.1452611 34,2023.274784,835.4102703 35,1703.837196,682.9995098 36,1740.44177,713.3121368 37,1970.331012,816.5239645 38,1990.223669,838.9949534 39,2081.559891,822.5936391 40,1968.990856,852.1259441 41,2178.322511,920.80226 42,1887.572381,721.0746569 43,2103.964882,821.6521912 44,2097.040605,873.0062511 45,1864.779016,755.1746154 46,1935.743565,895.4951282 47,2191.797365,888.7284615 48,1968.150754,863.7490909 49,1858.735915,759.7144347 50,1933.34954,774.4202087 51,1680.540128,717.2402198 52,1748.214736,783.3395385 53,2183.694734,855.5897436 54,2142.662802,912.635349 55,1892.205584,776.5070164 56,2230.304238,887.8378102 57,2141.882287,903.7212821 58,1983.755009,815.5541958 59,1954.653032,743.0290819 60,1801.192428,718.5391635 61,1920.709571,808.6727692 62,1796.291216,699.0526007 63,2026.074655,909.3961954 64,1863.574774,729.9547929 65,1924.971832,770.2818388 66,2129.910527,794.0297343 67,2090.201938,809.6094569 68,1987.074651,731.8146606 69,2053.104282,839.4181954 70,1872.403668,787.2339391 71,1961.144455,824.335206 72,2135.414422,881.9237509 73,1857.780642,779.9428159 74,2058.696424,840.2234927 76,2169.489819,805.3868184 77,1891.844601,756.8752683 78,2099.708756,830.6765073 79,1976.981377,786.4878009 81,1932.909878,800.0033701 82,2101.603045,834.2990498 83,1867.872044,735.4201911 84,1870.947954,703.6186056 85,2135.962836,798.3315211 86,1859.497846,762.135947 87,1966.35974,776.6730353 88,2088.086246,808.0767316 89,1964.134743,851.5441764 90,2211.81001,866.3412008 91,1881.56405,805.7430148 92,1921.941058,725.2508829 93,1576.551861,606.5037422 95,2249.995426,882.4130493 96,2092.694714,778.8794369 97,2099.861152,840.9202391 98,1837.6733,760.0247786 99,1986.16533,796.1227279 100,1981.047087,747.7190033 Rialto,1879,892.02 Savannah,1654.75,834.2375
I assume you want to change the color of the points corresponding to the labels, since their precise coordinates along the x/y-axis aren't shown, and you'll have more work pinpointing them before the question about color comes up. If that's not the case, I'll delete my answer. # define color corresponding to each genotype HiBAP1517$color <- case_when(HiBAP1517$Genotype == "Savannah" ~ "firebrick1", HiBAP1517$Genotype == "Rialto" ~ "darkorange", TRUE ~ "black") # plot ggplot(HiBAP1517, # specify color aesthetic here for both geom_point & geom_text to inherit aes(x = BPM, y = Yld, color = color)) + geom_point(shape = 16) + geom_smooth(color = "#3366FF", # maintain default color for geom_smooth line method = lm, se = F) + # position labels based on their coordinates, rather than hard-code them via annotate() geom_text(aes(label = ifelse(Genotype %in% c("Savannah", "Rialto"), Genotype, "")), hjust = 1, vjust = 1) + # use defined colors directly scale_color_identity() + # other aesthetic parameters, irrelevant to the question at hand labs(x = expression("AGDM"[PM]^{}*(gm^{-2})), y = expression("GY"*(gm^{-2}))) + theme_classic() + theme(axis.title.x = element_text(color="black", size=14, face="bold"), axis.title.y = element_text(color="black", size=14, face="bold")) Data used: > dput(HiBAP1517) structure(list(Genotype = c("1", "2", "3", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "16", "17", "18", "19", "20", "21", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "76", "77", "78", "79", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "95", "96", "97", "98", "99", "100", "Rialto", "Savannah"), BPM = c(1767.793447, 2074.815941, 2197.933995, 2085.627286, 1908.97774, 2120.24666, 2226.617509, 2035.68002, 2153.727, 1993.568134, 2013.199982, 2078.275912, 2042.456487, 1840.058841, 2013.338146, 2087.151352, 1988.038384, 2083.092896, 2072.905795, 1849.744525, 1785.04038, 2078.402869, 1698.390774, 2065.842661, 2020.285009, 2039.137248, 1855.665106, 1792.32475, 1992.616447, 2025.79755, 2023.274784, 1703.837196, 1740.44177, 1970.331012, 1990.223669, 2081.559891, 1968.990856, 2178.322511, 1887.572381, 2103.964882, 2097.040605, 1864.779016, 1935.743565, 2191.797365, 1968.150754, 1858.735915, 1933.34954, 1680.540128, 1748.214736, 2183.694734, 2142.662802, 1892.205584, 2230.304238, 2141.882287, 1983.755009, 1954.653032, 1801.192428, 1920.709571, 1796.291216, 2026.074655, 1863.574774, 1924.971832, 2129.910527, 2090.201938, 1987.074651, 2053.104282, 1872.403668, 1961.144455, 2135.414422, 1857.780642, 2058.696424, 2169.489819, 1891.844601, 2099.708756, 1976.981377, 1932.909878, 2101.603045, 1867.872044, 1870.947954, 2135.962836, 1859.497846, 1966.35974, 2088.086246, 1964.134743, 2211.81001, 1881.56405, 1921.941058, 1576.551861, 2249.995426, 2092.694714, 2099.861152, 1837.6733, 1986.16533, 1981.047087, 1879, 1654.75), Yld = c(747.0708034, 775.8880562, 854.3810136, 845.9306447, 841.4318038, 875.5534429, 764.3849451, 810.2658242, 861.7024631, 782.5763292, 822.6565187, 837.2819632, 802.6913977, 767.6509829, 801.2064103, 822.1910199, 859.573342, 887.2783898, 861.3044422, 723.5014595, 747.4940519, 835.7669124, 681.256732, 852.3073467, 811.6889063, 821.7951099, 781.0350726, 744.9001931, 860.7054072, 834.1452611, 835.4102703, 682.9995098, 713.3121368, 816.5239645, 838.9949534, 822.5936391, 852.1259441, 920.80226, 721.0746569, 821.6521912, 873.0062511, 755.1746154, 895.4951282, 888.7284615, 863.7490909, 759.7144347, 774.4202087, 717.2402198, 783.3395385, 855.5897436, 912.635349, 776.5070164, 887.8378102, 903.7212821, 815.5541958, 743.0290819, 718.5391635, 808.6727692, 699.0526007, 909.3961954, 729.9547929, 770.2818388, 794.0297343, 809.6094569, 731.8146606, 839.4181954, 787.2339391, 824.335206, 881.9237509, 779.9428159, 840.2234927, 805.3868184, 756.8752683, 830.6765073, 786.4878009, 800.0033701, 834.2990498, 735.4201911, 703.6186056, 798.3315211, 762.135947, 776.6730353, 808.0767316, 851.5441764, 866.3412008, 805.7430148, 725.2508829, 606.5037422, 882.4130493, 778.8794369, 840.9202391, 760.0247786, 796.1227279, 747.7190033, 892.02, 834.2375)), class = "data.frame", row.names = c(NA, -96L))
combine two data frames into one while keeping the original row numbers
I'm struggling with a very simple problem. I have two data frames to be combined into a single data frame while retaining their original row names. If you're interested to play with the two data frames: > dput(cc) structure(list(c = c(166.081273211195, 117.874627144804, 85.7050194973198, 122.960746859139, 144.149802403233, 90.8034500957001, 89.5265981283352, 77.8535718910714, 144.544005656701, 115.597165020403, 109.028391182666, 89.4045716355402, 77.7944830105746, 69.3378920684953, 79.9094499459695, 146.768077595585, 157.933946809176, 92.562729606313, 62.5081476457419, 90.1081848285295, 111.830482369239, 111.596975757741, 99.2311075024839, 145.204385556523, 99.0215341758211, 75.4302512245677, 92.0094563363458, 77.7314808830408)), .Names = "c", row.names = c("26", "27", "28", "29", "35", "36", "37", "38", "39", "40", "46", "47", "48", "49", "50", "51", "52", "56", "57", "58", "59", "60", "61", "62", "69", "70", "71", "72"), class = "data.frame") > dput(ccc) structure(list(b = c(76.376257255471, 61.8314936138378, 62.769450181685, 73.6356164203567, 111.690756826382, 76.9294523843767, 61.3534699857719, 69.3647221333577, 83.9764878084258, 81.3800252294203, 69.5091780233591, 87.3595961209547, 78.5074999563006, 74.4479256924594, 81.5920316281566, 96.3417259554163, 75.4138056616399, 76.0553034201146, 95.1759950844736, 81.3252467041995, 86.306305649635, 70.5626459312969, 72.7797520793756, 119.49702877934, 123.268678343102, 88.0450051118928, 76.2139948860248, 98.1496728839206, 126.396927030103, 146.058540478643, 115.7341525964, 87.280600158726, 78.0274068331766, 122.817977752389, 142.491559175427, 152.895839114334, 94.4932174696818, 117.167042165763, 85.5340971715004, 101.480170738897, 117.759691799033, 128.998051359269, 98.3180491401911, 84.5915489017958, 87.4927520958843, 75.5366495973031, 118.088343275321, 121.375320935357, 94.7724147096235, 70.2266610201599, 123.158462686523, 76.87408931845, 94.4365460662552, 105.952134808703, 76.821070196668 )), .Names = "b", row.names = c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "30", "31", "32", "33", "34", "41", "42", "43", "44", "45", "53", "54", "55", "63", "64", "65", "66", "67", "68", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83"), class = "data.frame") The easiest way to combine is > c(cc$c, ccc$b) [1] 166.08127 117.87463 85.70502 122.96075 144.14980 90.80345 89.52660 77.85357 144.54401 [10] 115.59717 109.02839 89.40457 77.79448 69.33789 79.90945 146.76808 157.93395 92.56273 [19] 62.50815 90.10818 111.83048 111.59698 99.23111 145.20439 99.02153 75.43025 92.00946 [28] 77.73148 76.37626 61.83149 62.76945 73.63562 111.69076 76.92945 61.35347 69.36472 [37] 83.97649 81.38003 69.50918 87.35960 78.50750 74.44793 81.59203 96.34173 75.41381 [46] 76.05530 95.17600 81.32525 86.30631 70.56265 72.77975 119.49703 123.26868 88.04501 [55] 76.21399 98.14967 126.39693 146.05854 115.73415 87.28060 78.02741 122.81798 142.49156 [64] 152.89584 94.49322 117.16704 85.53410 101.48017 117.75969 128.99805 98.31805 84.59155 [73] 87.49275 75.53665 118.08834 121.37532 94.77241 70.22666 123.15846 76.87409 94.43655 [82] 105.95213 76.82107 But doing this recreate the row numbers. Is there any simple function to combine while keeping the row names intact? Thanks!
These lines of code should solve the problem z0 <- as.numeric(c(rownames(cc), rownames(ccc))) z <- data.frame(c(cc$c, ccc$b)) row.names(z) <- z0 data.frame(z[order(as.numeric(row.names(z))),])
Fit gamma mixture to fertility schedule in R
I am trying to fit a gamma mixture model (two gamma distributions) to an age-fertility profile. I have a dataset containing age specific fertility rates and age, and I want to fit two gammas in order to find the corresponding parameters (in the end I will use fertility profiles from different years and try to see how the parameters evolve over time). I have so far tried to use mixtools library (gammamixEM) but without success. I would be very grateful for some help. Ale a<- structure(list(EDAD = structure(1:45, .Label = c("11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "Total" ), class = "factor"), value = c(0, 0, 0, 0, 0.002761668, 0.006712018, 0.010820244, 0.017867778, 0.029533765, 0.034055242, 0.036665669, 0.043840421, 0.042949584, 0.042344612, 0.050588917, 0.050187588, 0.054114728, 0.057258792, 0.059280324, 0.062566731, 0.062369629, 0.062154767, 0.063734337, 0.058236776, 0.052623842, 0.046330921, 0.040639027, 0.033707865, 0.02531141, 0.017651534, 0.010953808, 0.007463863, 0.003224766, 0.002190101, 0.001117443, 0.000465116, 0.000363901, 0.00012647, 0.000267326, 0.000280308, 0, 0, 0, 0, 0)), .Names = c("EDAD", "value"), class = "data.frame", row.names = 79596:79640)
The reason why it won't run is because you have zeroes in your data set. Here is what you could do: aa <- a$value[a$value > 0] Now you can fit the gamma mixture require(mixtools) g3 <- gammamixEM(aa) Now check that it looks OK by plotting the fitted mixture density. d3 <- function(x) g3$lambda[1]*dgamma(x, g3$gamma.pars[1], 1/g3$gamma.pars[2]) + g3$lambda[2]*dgamma(x, g3$gamma.pars[3], 1/g3$gamma.pars[4]) Here is another pitfall: gammamixEM apparently parametrises the gamma distribution differently to R. Why? Who knows? x <- seq(min(aa), max(aa), 0.001) plot(x, d3(x), "l") hist(aa, col="pink", add=T, freq=F, breaks=10) Looks reasonable, if far from perfect.